시작 전에 Unity 함수의 라이프 사이클을 보고가자.
쉽게 말하면 유니티의 생애? 같은건데
유니티에서 지원하는 함수들의 실행 순서이다.
크게크게 보면
Awake로 시작해서 OnEnable을 거쳐 Start 함수를 실행하고
FixedUpdate 후에 OnTrigger와 OnCollision이 실행되며
그 이후에 Update, LateUpdate 함수가 실행되고
Ondisable,OnDestroy, OnApplicationQuit이 실행된다.
이제 InputManager라는 기능에 대해 알아보자.
윈도우 창을 열고 Package Manager에 들어간다.
상단에서 Unity Registry를 선택해주고 검색창에 Input을 입력해보자
Input System을 다운로드 받자
Input폴더를 만들어주고 최 하단의 Input Actions 라는걸 추가해주고
이름은 탑다운 컨트롤러 2D로 만들었다.
더블클릭을 통해 켜서 KeyboardMouse라는 scheme을 제작해주고 wasd와 마우스 포지션, 클릭에 대한 설정을 추가했다.
이제 탑다운 컨트롤러 스크립트를 만들고 내용을 수정해보자.
public class TopDownController : MonoBehaviour
{
public event Action<Vector2> OnMoveEvent;
public event Action<Vector2> OnLookEvent;
public void CallMoveEvent(Vector2 direction)
{
OnMoveEvent?.Invoke(direction);
}
public void CallLookEvent(Vector2 direction)
{
OnLookEvent?.Invoke(direction);
}
}
위에서 추가한 Move와 Look에 해당되는 event Action을 만들어두었다.
public class PlayerInputController : TopDownController
{
private Camera camera;
private void Awake()
{
camera = Camera.main;
}
public void OnMove(InputValue value)
{
Vector2 moveInput = value.Get<Vector2>().normalized;
CallMoveEvent(moveInput);
}
public void OnLook(InputValue value)
{
Vector2 newAim = value.Get<Vector2>();
Vector2 worldPos = camera.ScreenToWorldPoint(newAim);
newAim = (worldPos = (Vector2)transform.position).normalized;
CallLookEvent(newAim);
}
}
이 클래스는 탑다운 컨트롤러를 상속받는다.
public class TopDownMovement : MonoBehaviour
{
private TopDownController controller;
private Rigidbody2D movementRigidbody;
private Vector2 movementDirection = Vector2.zero;
private void Awake()
{
controller = GetComponent<TopDownController>();
movementRigidbody = GetComponent<Rigidbody2D>();
}
private void Start()
{
controller.OnMoveEvent += Move;
}
private void Move(Vector2 direction)
{
movementDirection = direction;
}
private void FixedUpdate()
{
ApplyMovement(movementDirection);
}
private void ApplyMovement(Vector2 direction)
{
direction = direction * 5;
movementRigidbody.velocity = direction;
}
}
탑다운 무브먼트는 MonoBehaviour를 상속받았다.
실행해보면?
W,A,S,D를 입력하면 부드럽게 잘 움직인다.
1014 TIL - Unity 애니메이터 갈아끼우기 (0) | 2024.10.14 |
---|---|
1011 TIL - Unity 오브젝트 풀링 (1) | 2024.10.12 |
1002 TIL - 프로젝트 5일차 (0) | 2024.10.02 |
1001 TIL - C# 프로젝트 4일차 (0) | 2024.10.01 |
0930 TIL - 프로젝트 3일차 (1) | 2024.10.01 |