PlayerShooter 스크립트를 새로 만듭니다. 첨부된 파일을 Assets에 추가하셔도 됩니다.
스크립트를 Player에 추가합니다. 플레이어에는 다음과 같이 3개의 스크립트가 추가되어 있고 다음과 같이 참조들이 연결되어 있어야 합니다.
GunShooter의 전체 스크립트입니다.
gun.Fire(),gun.Reload()가 있는 gun의 참조를 글로벌로 받아오고
입력을 받아올 playerInput컴포넌트를 playerInput 참조에 연결해줍니다.
Update() 에서 playerInput.fire가 참이면 gun.Fire()를 실행해 총알을 발사합니다. playerInput.fire가 참일경우 gun.Reload()를 실행합니다. Animatior가 있는 경우 애니메이션을 실행하나 여기서는 실행하지 않습니다. 마지막으로 UpdateUI()함수를 불러 UI를 업데이트 합니다. 아직 UI가 null이므로 실행하지는 않습니다.
using UnityEngine;
// 주어진 Gun 오브젝트를 쏘거나 재장전
// 알맞은 애니메이션을 재생하고 IK를 사용해 캐릭터 양손이 총에 위치하도록 조정
public class PlayerShooter : MonoBehaviour {
public Gun gun; // 사용할 총
public Transform gunPivot; // 총 배치의 기준점
private PlayerInput playerInput; // 플레이어의 입력
//private Animator playerAnimator; // 애니메이터 컴포넌트
private void Start() {
// 사용할 컴포넌트들을 가져오기
playerInput = GetComponent<PlayerInput>();
//playerAnimator = GetComponent<Animator>();
}
private void OnEnable() {
// 슈터가 활성화될 때 총도 함께 활성화
gun.gameObject.SetActive(true);
}
private void OnDisable() {
// 슈터가 비활성화될 때 총도 함께 비활성화
gun.gameObject.SetActive(false);
}
private void Update() {
// 입력을 감지하고 총 발사하거나 재장전
if (playerInput.fire) {
// 발사 입력 감지시 총 발사
//Debug.Log("Player Shooter Input.fire");
gun.Fire();
} else if (playerInput.reload) {
// 재장전 입력 감지시 재장전
if (gun.Reload()) {
// 재장전 성공시에만 재장전 애니메이션 재생
//playerAnimator.SetTrigger("Reload");
Debug.Log("Reload");
}
}
// 남은 탄약 UI를 갱신
//UpdateUI();
}
// 탄약 UI 갱신
/*
private void UpdateUI() {
if (gun != null && UIManager.instance != null) {
// UI 매니저의 탄약 텍스트에 탄창의 탄약과 남은 전체 탄약을 표시
UIManager.instance.UpdateAmmoText(gun.magAmmo, gun.ammoRemain);
}
}
*/
// 애니메이터의 IK 갱신
}
'유니티좀비게임 > 총과슈터' 카테고리의 다른 글
GunData 스크립트 (0) | 2023.04.28 |
---|---|
총 게임오브젝트 (0) | 2023.04.28 |
인터페이스 (0) | 2023.04.28 |