무기 교체 구현
1. 스크립트 수정
GunController 추가
[Header("GunHolders")]
[SerializeField] private List<GameObject> _gunHolders;
public void EquipM4()
{
foreach(GameObject gun in _gunHolders)
{
gun.SetActive(false);
}
CurrentGun = _gunHolders[1].GetComponent<Gun>();
_gunHolders[1].SetActive(true);
}
무기 종류만큼 함수 추가
GunItem
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public enum GunType
{
None,
M4,
M82,
}
public class GunItem : MonoBehaviour
{
public GunType GunType;
private float _rotationSpeed = 50f;
void Update()
{
transform.eulerAngles += new Vector3(0, _rotationSpeed * Time.deltaTime, 0);
}
private void OnTriggerEnter(Collider collision)
{
if (collision.tag == "Player")
{
Debug.Log("GunItem 획득");
switch(GunType)
{
case GunType.None:
break;
case GunType.M4:
collision.gameObject.GetComponent<Player>().GunController.EquipM4();
break;
case GunType.M82:
collision.gameObject.GetComponent<Player>().GunController.EquipM82();
break;
default:
break;
}
Destroy(gameObject);
}
}
}
무기 종류만큼 enum 추가, cast 추가
2. GunHolder 에 Gun 추가
위의 HandGun과 동일하게 GunHolder 자식에 새로운 Gun 추가
3D 총기 구현 참고!
https://kkln2486.tistory.com/218
3. GunHolder 설정
GunHolders List에 GunHolder의 Gun GameObject 모두 추가
4. GunItem 만들기
GunItem 스크립트 추가, Rigidbody 추가, Collider 추가
다음과 같이 설정
5. 애니메이션 추가
HandGun1 과 동일하게 애니메이션을 만들고 추가
* HandGun1에서 fire 애니메이션은 다운받은 것, M4 fire 애니메이션은 만들 수 없어서 그냥 추가만 해줌
'유니티' 카테고리의 다른 글
InputActionPhase (0) | 2024.01.11 |
---|---|
3D 애니메이션 만들기 (믹사모) (0) | 2024.01.09 |
Rotation 값 변경 (1) | 2024.01.03 |
3D 총기 구현 (0) | 2024.01.02 |
매니저 관리 (0) | 2023.12.29 |