유니티

3D 총기 구현 (2)

잼잼재미 2024. 1. 5. 01:42

 

 

무기 교체 구현


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

 

3D 총기 구현

총기 구현 1. GunHolder 생성 Player 자식으로 GunHolder 빈오브젝트, 그 자식으로 Gun 프리팹 생성 Gun 프리팹 자식으로 Amature 빈 오브젝트, 그 자식으로 Gun 빈 오브젝트 생성, 총알 발사 ParticleSystem 추가 *

kkln2486.tistory.com

 

 

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