안녕하세요 유니터 비기너입니다.
이번 글에선 물체를 이동시키는 몇가지 방법에 대해 다뤄보겠습니다.
Input.getKey
식별된 키를( ※ Keycode.W) 누르고있는동안 true 값을 반환하는 함수로
특정키를 입력받고 처리할 때 주로 사용합니다.
vector3(x,y,z)
백터란 방향과 크기를 포함한 단어이며 백터3는 3차원 백터를 표시한다는 것입니다.
vector3(0, 1, 0)에 의미를 해석해본다면 y방향으로 1만큼의 크기를 갖고있다고 할 수 있습니다.
vector3.up
Y 방향의 1의 크기를 갖고있습니다. vector3(0, 1, 0)
vector3.down
Y 방향의 -1의 크기를 갖고있습니다. vector3(0, -1, 0)
vector3.left
X 방향의 -1의 크기를 갖고있습니다. vector3(-1, 0, 0)
vector3.right
X 방향의 1의 크기를 갖고있습니다. vector3(1, 0, 0)
transform.position 예제
void Udpate()
{
if (Input.GetKey(KeyCode.W)) {
transform.position += Vector3.up * Time.deltaTime;
}
if (Input.GetKey(KeyCode.S)) {
transform.position += Vector3.down * Time.deltaTime;
}
if (Input.GetKey(KeyCode.A)) {
transform.position += Vector3.left * Time.deltaTime;
}
if (Input.GetKey(KeyCode.D)) {
transform.position += Vector3.right * Time.deltaTime;
}
}
transform.position
유니티 에디터 월드공간에서 오브젝트의 좌표를 나타내며 위의 스크립트 구현내용과 같이
백터의 힘을 작용시키면 입력 된 방향과 크기만큼 물체 이동이 가능합니다.
transform.Translate 예제
void Udpate()
{
if(Intput.GetKey(KeyCode.W)) {
transform.Translate(Vector.up * Time.deltaTime, Camera.main.transform);
}
if(Intput.GetKey(KeyCode.S)) {
transform.Translate(Vector.down * Time.deltaTime, Space.World);
}
if(Intput.GetKey(KeyCode.A)) {
transform.Translate(Vector.left * Time.deltaTime, Space.Self);
}
if(Intput.GetKey(KeyCode.D)) {
transform.Translate(Vector.right * Time.deltaTime);
}
}
transform.Tranlate(vector3, space)
transform.position과 동일하게 방향과 크기를 적용받아 물체를 이동하지만
좌표계(camera, world, local)의 기준으로 상대적으로 이동한다는게 차이점이다.
위와 같은 방식을 응용하여 슈팅게임의 비행물체를 키 입력을 받아서 이동시키는 것이 가능하며
이외에도 정말 많고 다양한 방식으로 물체를 이동시킬 수 있습니다.
마지막으로 물체를 이동하기 위해선 이동할 대상과, 백터의 방향과 크기를 부여하여
이동이 가능하다는 사실한가지를 꼭 파악하고 가셨으면 좋겠습니다.
지금까지 읽어주신 분들에게 감사드리고
좀 더 좋은 정보로 다시 뵙겠습니다.
감사합니다.
https://play.google.com/store/apps/details?id=com.NeighborGamer.escape
'유니티실습' 카테고리의 다른 글
유니티 부드러운 곡선이동 (1) | 2020.04.25 |
---|---|
유니티 특정물체 바라보기 (0) | 2020.04.24 |
유니티 물리적 제어가 가능한 강체 만들기 (0) | 2020.04.23 |
유니티 초단위 시간제어하기 (0) | 2020.04.22 |
유니티 충돌을 감지하는 초록선 (0) | 2020.04.20 |