Input System을 이용해서 작성한 코드(강의 1-6)흐름 파악하기

2024. 10. 7. 23:08카테고리 없음

 

1.

public void OnMove(InputValue value)
    {
        Vector2 moveInput = value.Get<Vector2>().normalized;
        CallMoveEvent(moveInput);
    }

Player Input컴퍼넌트에서 받아온 값을 Vector2값으로 변환시키고 normalized를 사용해서 대각석으로 이동을 하든 상하좌우로 이동을 하든 같은속도로 이동을 하게 만들어놓고, 그 값을 event가 있는 곳으로 값을 보내준다.

OnMove함수가 실행이 되는 이유는 Player Input컴퍼넌트에서 Behavior을 Send Messages로 설정을 해놔서 OnMove가 이벤트함수처럼 실행이 되는거다.

 

2. 

public event Action<Vector2> OnMoveEvent;      
public event Action<Vector2> OnLookEvent;

    public void CallMoveEvent(Vector2 direction)
    {
        OnMoveEvent?.Invoke(direction);
    }

그 보내준 값을 Invoke를 통해서 예약걸어놓은 메서드한테 값을 보낸다.

 

3.

 private void Start()
    {
        controller.OnMoveEvent += Move;
    }

    private void Move(Vector2 direction)
    {
        movementDirection = direction;
    }

Start에서 예약걸어놓은 메서드가 실행이 되서 해당 클래스에서 Vector2값을 가져와서 movementDirection에 저장한다.

 

4.

private void FixedUpdate()
    {
        ApplyMovement(movementDirection);
    }

    private void ApplyMovement(Vector2 direction)
    {
        direction = direction * 5;
        movementRigidbody.velocity = direction;
    }

 

   속도를 조절한다음에 Rigidbody2D안에 있는 벡터에 값을 넣어준다. 그 함수를 물리업데이트를 통해서 호출한다.