유니티 엔진의 이동방식중 Transform.Translate에 대해서 알아보겠습니다.
transform.Translate는 단순 좌표대로 이동하는 메서드로 순간이동 형태로 이동합니다. 물리엔진이 적용되지 않기 때문에 탑뷰형태 게임에서 오브젝트의 움직임이나 UI의 움직임 등에 주로 사용됩니다.
1. 장점
단순함 : 기초적인 이동이기에 해당 오브젝트에 스크립트 컴퍼넌트를 심어두고 겟컴퍼넌트로 불러온후 단순하게 몇줄만으로 이동을 구현할 수 있습니다.
예측이 쉬운 구현 : 물리엔진의 영향을 받지않고 단순히 이동하기에 생각한대로 이동하는 것을 구현하기 용이합니다.
2. 단점
물리엔진 미적용 : 자연스러운 물리적 상호작용을 적용하기 어렵습니다.
물리적 충돌 미적용 : 물리적 상호작용도 어렵지만 이동 좌표에 따라 벽끼임 등 이동불가능한 좌표에 이동제한을 두지 않는다면 충돌을 무시하고 벽 속으로 순간이동합니다.
3. 예문
using UnityEngine;
public class Player : MonoBehaviour
{
public float speed = 5.0f;
void Update()
{
transform.Translate(Vector3.forward * speed * Time.deltaTime);
}
}
해당 스크립트 컴포넌트를 Player 오브젝트에 넣고 실행시 Vector3.foward인 z축 방향으로 5.0f의 속도로 실제시간에 기반하여 이동합니다.
Time.deltaTime을 넣지 않는다면 실행하는 환경의 프레임속도에 따라서 각기 다른 속도로 이동하게 됩니다. 프레임속도가 빠를수록 더 멀리 이동하게 됩니다.