이 글은 PC 버전 TISTORY에 최적화 되어있습니다.
서론
모든 게임의 캐릭터는 이동을 합니다. 오버워치의 캐릭터들도 움직이고 심지어 그들이 쏘는 총알, 배경의 구름도 움직이고 있습니다. 이처럼 게임은 수 많은 오브젝트들의 이동이 모여서 이루어지는만큼 이동은 중요합니다.
1. 이동 (Move)
위치 바꿔보기
간단하게 두 가지 방법을 통해서 오브젝트의 위치(position)을 바꾸어보도록 하겠습니다.
먼저 위와 같이 Plane을 바닥으로하고 Cube를 만들어줍니다. (재질은 임의 조정)
이동 효과를 보기에 Directional Light는 방해되므로 삭제 후 다른 조명을 넣어봅시다.
하이어라키 뷰에서 Light ☞ Point Light를 선택합니다.
Range를 자신이 만든 Plane의 모든 모서리가 다 보일정도로 조정합니다.
이제 스크립트를 하나 만들어봅시다.
만든 스크립트는 큐브에 컴포넌트로 붙여줍니다.
먼저 알아야할 점은 유니티의 월드는 게임 오브젝트의 등을 보는 왼손 좌표계를 사용합니다. Vector3 객체를 많이 사용하는데 Vector3의 인자는 (x축, y축, z축)이 있습니다. 이제 위의 좌표계를 이용해서 Vector3에 대해 이해할 수 있습니다. Vector3(1.0f,2.0f,3.0f) 라는 것은 오브젝트의 오른쪽으로 1, 위로 2, 앞으로 3이라는 의미인 것이죠. |
첫 번째 방법은 position에 직접 Vector3 객체를 넣어주는 것 입니다. 객체가 y축으로 0.5, z축으로 5 이동합니다.
Plane 의 정가운데 있던 객체가 이동한 것을 볼 수 있습니다.
두 번째는 Translate 함수를 사용하는 것으로 인자는 Vector3 입니다. 사용법은 위와 같습니다.
아래쪽으로 이동한 것을 볼 수 있습니다.
키보드로 큐브 이동시키기
위의 예제에서 위치를 이동시켜보았습니다. 사실 이동으로 보기는 어려웠죠. 이번에는 키보드 인풋을 통해서 이동을 해보도록 하겠습니다. 업데이트 함수내에서 키보드를 누르는 동안 위치가 조금씩 바뀌어 게임 상에서는 이동으로 보이게 됩니다.
먼저 키보드 입력을 받아들이는 방법은 Edit ☞ Project Settings ☞ Input 을 선택해보면 미리 정의된 키 조합들이 있습니다. 직접 정의를 하는 법은 다음에 배우도록하겠습니다. 이 키 조합은 Input.GetAxis("키 조합 이름") 을 통해 가져올 수 있습니다. 예를 들어 Input.GetAxis("Horizontal")을 하고 A, D나 방향키 ←, →를 누르면 -1부터 +1까지의 값을 반환하게 됩니다. |
이제 위와 같이 스크립트를 작성해 줍니다. 받아온 키 값은 -1 ~ 1 사이의 값이므로 사용자 임의의 speed를 더해서 거리를 보정합니다. Time.deltaTime에 대해서는 다음 파트에서 다루도록 하겠습니다. |
Translate 함수는 아까 언급했듯이 Vector3 객체가 들어가는데 Vector3.right를 하면 Vector3(1,0,0)과 같다는 것을 볼 수 있습니다.
Vecto3.forward는 Vector3(0,0,1)로 Z의 양의 축 방향 즉 앞으로 이동하도록 합니다.
실행 후 w,a,s,d 키나 방향키를 통해 오브젝트를 이동시킬 수 있음을 보실 수 있습니다.
'Frontend > Unity' 카테고리의 다른 글
[유니티 트랜스폼] 회전 (Rotate) (0) | 2016.08.04 |
---|---|
[유니티 기초] 유니티 생명주기 (Life Cycle) (0) | 2016.08.04 |
[유니티 기초] Time.deltaTime (7) | 2016.08.04 |
[유니티 실전 예제] 씬 전환 (10) | 2016.08.04 |
[유니티 C# 기초 강의] 12. 델리게이트 (5) | 2016.08.03 |
[유니티 디버깅] ⑥ 에디터 디버깅 (0) | 2016.08.03 |