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)만큼 이동시킵니다.

 

위 방법들을 조합하여 다양한 이동 방법을 구현할 수 있습니다.