유니티 엔진의 transform.Translate

유니티 엔진의 이동방식중 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을 넣지 않는다면 실행하는 환경의 프레임속도에 따라서 각기 다른 속도로 이동하게 됩니다. 프레임속도가 빠를수록 더 멀리 이동하게 됩니다.

댓글 남기기