본 내용은 필자가 공부한 내용을 정리한 것으로 틀리거나 잘못된 내용이 있을 수 있습니다.
오브젝트를 움직이기 위해 트랜스폼의 값을 건드려 움직여보겠습니다.
우선, 바닥과 구 하나를 준비했습니다
Transform.position
구를 움직이게 할 스크립트를 작성해보겠습니다.
void Update()
{
transform.position = new Vector3(1, 1, 1);
}
이렇게 작성하면 오브젝트가 (1, 1, 1)의 위치로 순간이동합니다.
또, 아래처럼 작성할 수도 있습니다.
void Update()
{
transform.position += new Vector3(1, 0, 0);
}
위와 같이 순간이동하듯이 움직이는 것을 볼 수 있습니다. (컴퓨터의 성능 탓에 조금 이상하게 나와버렸습니다만)
update함수가 실행될 때마다 x축의 위치가 1, 2, 3, 4... 의 위치로 순간이동합니다.
Transform.Translate
position은 순간이동을 하기 때문에 실제 이동에는 적합하지 않습니다. 그렇기 때문에 Translate 함수를 사용합니다.
아래와 같은 방법으로 작성할 수 있습니다.
transform.Translate(0, 0, 1);
transform.Translate(new Vector3(0, 0, 1));
또, 위치를 로컬좌표에서 움직일지, 월드좌표에서 움직일지도 정할 수 있습니다.
로컬좌표에서 움직이고 싶다면 Space.Self 를,
월드좌표에서 움직이고 싶다면 Space.World 를 붙이면 됩니다.
기본적으로(↑위처럼 선언한다면) 로컬좌표로 설정됩니다.
transform.Translate(new Vector3(0, 0, 1), Space.Self); //혹은 Space.World
translate를 이용하면 위와 같이 부드럽게 움직이게 할 수 있습니다.
추가1
https://docs.unity3d.com/kr/530/ScriptReference/Vector3.html
추가2
https://docs.unity3d.com/ScriptReference/Transform.Translate.html
'Unity > 다루기' 카테고리의 다른 글
[유니티] 거리 측정하기 (0) | 2021.06.06 |
---|---|
[유니티] 난수 발생 (0) | 2021.05.30 |
[유니티] 4. 콜라이더(collider), 트리거 (0) | 2021.05.26 |
[유니티] 2. 키보드 입력받기 (Input) (0) | 2021.05.12 |
[유니티] 1. 리지드바디 (Rigidbody) (0) | 2021.05.11 |