Player

Input System을 활용해서 간단한 플레이어를 만들어 본다.

 

구현할 기능은 Move, Sprint

 

디바이스는 키보드, Invoke C Sharp Events로 작업한다.

 

Move

Input Action에서 WASD의 입력을 받아서 플레이어 이동으로 처리한다.

 

Input Action - Move

 

Input Action에서 WASD키를 조합하여 Move 액션을 만든다.

 

스크립트에서 PlayerInput의 onActionTriggered 이벤트에 OnActionTriggered 함수를 리스너로 등록하고, OnActionTriggered 함수 안에서 각 액션에 대한 처리를 한다.

 

private PlayerInput playerInput;
private Vector2 moveInput;

private void Awake()
{
	...
    playerInput = GetComponent<PlayerInput>();
    playerInput.onActionTriggered += OnActionTriggered;
    ...
}

...


private void OnActionTriggered(InputAction.CallbackContext context)
{
    if (context.action.name == "Move" && context.performed)
    {
        OnMove(context);
    }
}

...

public void OnMove(InputAction.CallbackContext context)
{
    moveInput = context.ReadValue<Vector2>();
}

 

WASD 키 입력에 따라서 moveInput의 값이 수시로 업데이트되고 플레이어의 움직임을 관리하는 함수에서 moveInput 값을 사용해서 처리한다.

 

확실한 입력이 있을 때 만 처리하기 위해서 performed 인 경우를 체크한다.

 

Sprint

달리기를 위한 기능으로 눌린 상태에서 더 빠르게 움직이도록 한다.

Input Action - Sprint

 

Left Shift 키와 바인딩하여 누르고 있을 때 달리고 떼면 다시 걷도록 한다. 이 입력을 위해서 Press And Release로 키 입력을 받는다.

 

private void OnActionTriggered(InputAction.CallbackContext context)
{
	...
    
    if (context.action.name == "Sprint" && context.performed)
    {
        OnSprint(context);
    }

    ...
}

public void OnSprint(InputAction.CallbackContext context)
{
    isSprint = context.ReadValue<float>() == 1;
    currentSpeed = isSprint ? moveSpeed * 2f : moveSpeed;
    Debug.Log("On Sprint");
}

 

눌림 상태는 float 값으로 들어오며 눌리면 1 떼면 0으로 콜백이 들어온다.

 

이 값을 달리는 상태를 변경하는 플래그로 사용해서 처리한다.

 

간단하게 조작 로직을 구현해서 본다.

 

Player - Move&Sprint

 

728x90
반응형

'Develop > Unity' 카테고리의 다른 글

Input System - Player Input  (0) 2025.04.11
Input System - Input Actions  (0) 2025.04.10
InputSystem 기본 사용법  (0) 2025.03.25
유니티 기본 물리 샘플  (0) 2025.03.21
구글 계정 연동  (1) 2025.02.28

+ Recent posts