Player
Input System을 활용해서 간단한 플레이어를 만들어 본다.
구현할 기능은 Move, Sprint
디바이스는 키보드, Invoke C Sharp Events로 작업한다.
Move
Input Action에서 WASD의 입력을 받아서 플레이어 이동으로 처리한다.
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
달리기를 위한 기능으로 눌린 상태에서 더 빠르게 움직이도록 한다.
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으로 콜백이 들어온다.
이 값을 달리는 상태를 변경하는 플래그로 사용해서 처리한다.
간단하게 조작 로직을 구현해서 본다.
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 |