Unity
Unity에서 게임 오브젝트 위치 이동 시키기
코샵
2023. 3. 18. 10:11
반응형
Unity에서는 C# 스크립트를 사용하여 오브젝트의 위치를 이동시킬 수 있습니다. 아래는 기본적인 방법입니다.
1. Transform 컴포넌트의 position 값을 변경
Transform 컴포넌트의 position 속성을 직접 변경하여 오브젝트의 위치를 이동시킬 수 있습니다.
using UnityEngine;
public class ObjectMover : MonoBehaviour
{
void Update()
{
transform.position = new Vector3(0, 1, 0);
}
}
위 코드는 매 프레임마다 오브젝트의 위치를 (0, 1, 0)으로 이동시킵니다.
2. Translate 메서드 사용
Transform 컴포넌트의 Translate 메서드를 사용하여 오브젝트를 상대적으로 이동시킬 수 있습니다.
Translate 메서드는 Transform 컴포넌트에서 제공하는 메서드로, 해당 오브젝트를 상대적으로 이동시킬 수 있습니다. 즉, 현재 위치를 기준으로 x, y, z 축 방향으로 상대적으로 이동시키는 것입니다.
Translate 메서드는 다음과 같은 매개 변수를 가집니다.
public void Translate(float x, float y, float z, [Space] Space relativeTo = Space.Self);
- x, y, z : 각 축 방향으로 이동할 양을 나타냅니다.
- relativeTo : 이동 방향을 설정합니다. 기본값은 Space.Self로, 현재 오브젝트를 기준으로 이동합니다. Space.World로 설정하면, 세계 좌표계를 기준으로 이동합니다.
예를 들어, 아래 코드는 매 프레임마다 오브젝트를 (0, 1, 0)만큼 상대적으로 이동시킵니다.
using UnityEngine;
public class ObjectMover : MonoBehaviour
{
void Update()
{
transform.Translate(0, 1, 0);
}
}
위 코드는 매 프레임마다 오브젝트를 (0, 1, 0)만큼 상대적으로 이동시킵니다.
이렇게 Translate 메서드를 사용하면, 좌표를 계산하지 않고도 쉽게 오브젝트를 이동시킬 수 있습니다.
3. Rigidbody 컴포넌트 사용
Rigidbody 컴포넌트를 사용하여 물리엔진에 의한 이동도 가능합니다.
using UnityEngine;
public class ObjectMover : MonoBehaviour
{
Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
rb.MovePosition(transform.position + new Vector3(0, 1, 0));
}
}
위 코드는 FixedUpdate 함수에서 Rigidbody의 MovePosition 메서드를 사용하여 오브젝트를 (0, 1, 0)만큼 이동시킵니다.
위 방법들을 조합하여 다양한 이동 방법을 구현할 수 있습니다.