
2D, 3D, 1인칭, 3인칭 게임을 막론하고 거의 모든 게임은 유저가 게임 캐릭터("Player")를 움직이며 게임을 진행한다. Player의 움직임은 어떤 식으로 구현하는지 알아보자.
우선, 유저의 입력이 있을 것이다. 모바일에서의 게임 환경이라면 화면 터치 및 드래그로, PC의 경우는 키보드의 '화살표'나 'WASD'가 바로 유저의 입력이 된다.
Unity에서는 UnityEngine.Input API를 제공해주어 해당 API를 이용하면 다양한 입력에 대해 컨트롤 할 수 있다.
Services > General Settings > Input Manager

UnityEngine.Input API를 사용하여 컨트롤 가능한 항목들을 위와 같이 볼 수 있다.
using UnityEngine;
public class Driver : MonoBehaviour
{
[Header("Settings")]
[SerializeField] private float steerSpeed;
[SerializeField] private float moveSpeed;
[SerializeField] private float steerAmount;
[SerializeField] private float moveAmount;
void Update()
{
// 기본 움직임 (좌우, 상하)
steerAmount = Input.GetAxis("Horizontal") * steerSpeed * Time.deltaTime; // 좌우 무빙 키보드 입력
moveAmount = Input.GetAxis("Vertical") * moveSpeed * Time.deltaTime; // 상하
transform.Rotate(0, 0, -steerAmount); // steering 조향각 조정
transform.Translate(0, moveAmount, 0);
}
}

위 사진에서 볼 수 있듯이 Input API를 사용하여 "Horizontal"과 "Vertical"에 대한 유저의 입력을 받아오는 코드이다.
steerAmount = Input.GetAxis("Horizontal");
"Horizontal" 즉, 수평적인 움직임, 좌우 움직임에 대한 입력을 받아오게 된다. Input Manager의 "Horizontal" 항목을 눌러보면, 수평적인 이동에 대한 적용 키 값은
화살표의 '← (left)', '→ (right)' 키와 'WASD'의 'A', 'D' 키로 구성되며, '← (left)'에 대한 좌측 설명에 "Negative Button", '→ (right)'은 "Positive Button"임을 확인할 수 있다.
즉, '←' 키를 누르면 Input.GetAxis("Horizontal") 의 결과가 음수, '→' 키를 누르면 양수가 된다는 뜻이다.
마찬가지로 "Vertical"에 대한 입력 또한 다음과 같이 받아올 수 있다.
moveAmount = Input.GetAxis("Vertical");
이제 유저의 입력에 대해 양수 혹은 음수를 받아온 값을 통해 Game Object의 transform component에 적용해 주면 player의 움직임을 구현할 수 있다.

transform.Rotate(0, 0, -steerAmount); // steering 조향각 조정
transform.Translate(0, moveAmount, 0); // 앞 뒤 움직임
예를 들어, 게임 도중 전체 맵을 보고 싶은 경우에 'M' 키를 누른다고 가정해보자. 게임 도중 'M' 키가 입력됨에 따라 화면 전환이 이루어져야 한다. 단순 사용자의 입력에 따른 상태 변환은 Input.GetKeyDown() method를 사용하여 구현할 수 있다.
void Update()
{
if (Input.GetKeyDown(KeyCode.M))
{
if (!isMinimapOpened)
{
minimapCamera.SetActive(true);
isMinimapOpened = true;
}
else
{
minimapCamera.SetActive(false);
isMinimapOpened = false;
}
}
}
'M' 키가 눌렸는지 확인하기 위해 KeyCode.M 을 사용하여 특정 키가 입력되었는지 확인할 수 있다.
Input.GetKeyDown(KeyCode.M)