이제 키를 입력받아 물체를 움직여보자.
Unity에 built-in된 키를 이용하여 움직이려고 한다.
수평으로 움직이려면 Horizontal, 수직은 Vertical이다. 일반적인 방향키로 움직일 수도 있고, 게임에서처럼 w,a,s,d 키를 이용하여 움직일 수도 있다.
전에 했던것처럼 코딩을 짜보면
if (Input.GetButton("Horizontal"))
{
Debug.Log("횡 이동중...");
}
단순히 Horizontal 키를 입력받으면 '횡 이동중...'이라는 메세지만 보게 될 것이다.
여기서 GetAxis
라는 함수를 추가해주면?
실수 값이 추가되는 것을 볼 수 있다.
이 GetAxis
는 수평,수직을 입력받으면 float 타입의 값을 반환한다. GetAxisRaw
를 추가하면 실수가 아닌 정수 1,-1을 반환한다.
이제는 직접 오브젝트를 이동시켜보자
여기에 Cube라는 오브젝트가 0,0,0에 존재한다.
아! 일단 물체를 이동시키는것에 있어서 벡터라는 변수에 대해 알아야 한다. 이미 알다시피 벡터는 스칼라에서 방향이 추가된 값이라고 알고 있다. 이 벡터라는 변수를 이용해서 물체를 이동시킬 것이다.
우선, 키보드로 입력하지 안않고 0,0,0에 존재하는 오브젝트를 5,5,0으로 이동시키려고 한다.
void Start()
{
Vector3 vec = new Vector3(5, 5, 0); // x, y, z 초기화
transform.Translate(vec);
}
이 코드를 실행시키면 보다시피
5,5,0으로 이동된것을 알 수 있다. 위 코드를 보면 Vector3
이라는 자료형을 사용했는데, 간단히 생각해서 3D는 Vector3
, 2D는 Vector2
를 이용하면 된다. 이 벡터 변수를 이용해서 오브젝트가 위치해있는 값에서 벡터 변수만큼의 값만큼 이동한다.
그러면 키보드로 입력받아서 오브젝트를 이동시키려면 어떻게 해야할까?
아까 배웠던 GetAxis
함수를 이용하면 된다.
void Update()
{
Vector3 vec = new Vector3(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"), 0); // x, y, z 초기화
transform.Translate(vec);
}
벡터 변수안에 넣었던 숫자 대신에 GetAxix
함수를 넣어줬다. x축은 'Horizontal' 입력키를 받고, y축은 'Vertical' 입력키를 받는다.
아 이건 Update
함수 내에서 실행시킨다. Update
함수는 1초마다 계속 실행되는 함수이다. 이제 Unity에서 키보드로 움직여보면 Cube 오브젝트가 움직인다.