
3D 이동 게임을 만들던 도중 input system의 입력을 다음과 같이 받았다.
public class PlayerController : MonoBehaviour
{
public Vector2 curMovementInput;
public void OnMoveInput(InputAction.CallbackContext context)
{
if (context.phase == InputActionPhase.Started)
{
curMovementInput = context.ReadValue<Vector2>();
}
else if (context.phase == InputActionPhase.Canceled)
{
curMovementInput = Vector2.zero;
}
}
}
그러나 해당 코드로 실행 시 이동이 매끄럽지 않았다.
예를들면 앞으로 이동과 옆으로 이동을 함께 눌렀을 때, 대각선으로 이동하지 않았다.
직각으로 이동한다고 쳐도, 앞 이동 버튼을 누른 상태로 옆 이동 버튼을 바로 누르면 앞으로 이동이 유지되는 현상이 일어났다.
public class PlayerController : MonoBehaviour
{
public Vector2 curMovementInput;
public void OnMoveInput(InputAction.CallbackContext context)
{
if (context.phase == InputActionPhase.Performed)
{
curMovementInput = context.ReadValue<Vector2>();
}
else if (context.phase == InputActionPhase.Canceled)
{
curMovementInput = Vector2.zero;
}
}
}
이때 Started를 Performed로 바꾸니 문제가 해결되었다.
Started는 입력 받는 순간만을 받기 때문에 문제가 발생할 수 있지만, Performed는 입력이 완전히 끝난 상태를 받기 때문이다.
'내일배움캠프 TIL' 카테고리의 다른 글
| 내일배움캠프 33일차 TIL "전략 패턴" (0) | 2024.10.30 |
|---|---|
| 내일배움캠프 32일차 TIL "제대로 생성되지 않는 아이템" (0) | 2024.10.29 |
| 내일배움캠프 30일차 TIL "CursorLockMode" (0) | 2024.10.25 |
| 내일배움캠프 29일차 TIL "Raycast" (0) | 2024.10.24 |
| 내일배움캠프 28일차 TIL "코루틴(Coroutine)" (0) | 2024.10.23 |