해당 정보는 필자가 2D를 기준으로 작성하고 있기 때문에, Vector2를 사용했음을 미리 고지합니다.
2D에서도 Vector3를 사용할 수 있지만 학습은 간단한 환경에서 하고싶어 다음과 같이 사용했습니다.


6000.3.12f1버전 기준해서 해당 시스템을 사용하도록 기본 세팅이 되어있습니다.
제가 개발을 했던 때가 2019년인가 18년 사이여서 없었는데 새로 생겼더라구여
크로스 플랫폼에 용이하다는 것은 확장성이 좋다는 것이고 이것으로 새로 배워보겠습니다.

원래 구버전이라면 이렇게 적음으로써 작동하는 것을 확인할 수 있었는데 작동하지 않더라구여.

찾아보니 여기의 값을 Both로 바꾸면 해결된다는 것이었습니다.
대충 눈치껏 보면 Input Manager (Old)인거 같은데
하지만 프로그래밍은 흐름을 따라가는 법!
Both로 바꾸면 정상 작동 하는지 확인은 안 해봤지만
어차피 아는거였으니까 신문물을 따라가야 합니다!

입력을 받아 움직일 오브젝트에 다음과 같은 컴포넌트를 넣어줍니다.
Actions에 맨 처음에 만들었던 액션 넣어주시고, 다음과 같이 설정해줍니다.
※ 여기서 Camera를 메인 카메라 넣으면 작동할 줄 알았는데 안함, 저건 빼주셔도 될 것 같습니다
여담이지만 스토리나 컷신 같은 것에서 따로 움직일 카메라를 생각하면 따로 작동시키는게 좋을거 같기도 하고..

물론 움직일 오브젝트에 중력 넣어주셨죠?
기본값은 Gravity Scale에 값이 들어가 있을텐데 0으로 안하시면 아래로 떨어집니다.
using UnityEngine;
using UnityEngine.InputSystem;
public class TestScript : MonoBehaviour
{
public Vector2 inputVec;
public float speed;
Rigidbody2D rigid;
private void Awake()
{
rigid = GetComponent<Rigidbody2D>();
}
private void FixedUpdate()
{
Vector2 nextVec = inputVec * speed * Time.fixedDeltaTime;
rigid.MovePosition(rigid.position + nextVec);
}
void OnMove(InputValue value)
{
inputVec = value.Get<Vector2>();
}
}
여기서 inputVec를 전역으로 뺀 이유는 직접 움직이면서 X, Y값이 어떻게 입력되는지 확인하기 위함입니다.
기존의 방법으로는 이동 걸고 노말라이즈로 대각 이동속도를 같게 설정해서 움직이게 해줬던 것 같은데
새로운 방법을 사용하면 안 걸어도 대각으로 움직일 때 값이 알아서 맞춰지는 것을 확인할 수 있습니다.
speed는 제가 이동속도 설정해서 보려고 넣은 것이라 그냥 기호에 맞게 코드에 알아서 넣으셔도 됩니다.
Rigidbody 값을 기반으로 현재의 좌표를 따서 값을 이동하는거라 물리 달아주셔야합니다.
OnMove 메서드를 어디서 보냐면

플레이어 인풋 아래쪽에 적혀있는데, 더 자세한 정보는 대충 여기서 참고하시면 될 것 같습니다.
간단하게 저거만 달아줘도 잘 작동합니다.


이거 테스트 하면서 게임패드도 잘 작동하는지 켜봤다가 이번에 게임패드 고장난 것도 알게되었습니다.
다음에 사면 국산말고 엑박이나 플스 정품산다 ㅅㅂ

'Unity > 개인 공부' 카테고리의 다른 글
| [ Unity ] 7. 오브젝트의 충돌 (0) | 2026.05.13 |
|---|---|
| [ Unity ] 6. 오브젝트의 동력 (3가지) (0) | 2026.05.13 |
| [ Unity ] 5. 충돌 판정과 Velocity 초기화 (0) | 2026.05.13 |
| [ Unity ] 4. 오브젝트의 추적 (3가지) (0) | 2026.05.11 |
| [ Unity ] 2. 내 재활전용 기본 정리 (0) | 2026.05.11 |
| [ Unity ] 1. 간단하게 콘솔 로그 출력해보기 (0) | 2026.05.10 |