티스토리 뷰

728x90
반응형

유니티를 사용하면서 오브젝트를 특정 목표 지점으로 이동시키고자 할 때에는 여러 가지 방법이 있습니다. 가장 많이 사용되는 방법으로는 Lerp, Slerp, MoveTowards와 SmoothDamp가 있습니다. 이번 글에서는 각 방법의 사용법과 활용 예제를 살펴보겠습니다.

 

1. MoveTowards

 

`MoveTowards`는 오브젝트를 직선으로 목표 지점까지 일정한 속도로 이동시킵니다.

 

 

using UnityEngine;



public class MoveTowardsExample : MonoBehaviour

{

    public Transform target;

    public float speed = 2.0f;



    void Update()

    {

        transform.position = Vector3.MoveTowards(transform.position, target.position, speed * Time.deltaTime);

    }

}

 

 

위 코드에서 오브젝트는 `target` 위치로 초당 `speed` 유닛의 속도로 이동합니다.

 

2. Lerp

 

`Lerp`는 두 점 사이를 선형 보간을 통해 이동합니다. 시간에 따라 비율이 조정되므로 부드러운 이동을 연출할 수 있습니다.

 

 

using UnityEngine;



public class LerpExample : MonoBehaviour

{

    public Transform target;

    public float speed = 0.1f;



    void Update()

    {

        transform.position = Vector3.Lerp(transform.position, target.position, speed * Time.deltaTime);

    }

}

 

 

이 코드는 현재 위치에서 `target` 위치로 부드럽게 이동합니다.

 

3. Slerp

 

`Slerp`는 선형 보간이 아닌 구면 선형 보간을 통해 두 점 사이를 호로 이동합니다.

 

 

using UnityEngine;



public class SlerpExample : MonoBehaviour

{

    public Transform target;

    public float speed = 0.1f;



    void Update()

    {

        transform.position = Vector3.Slerp(transform.position, target.position, speed * Time.deltaTime);

    }

}

 

 

이 코드는 두 오브젝트 사이를 호를 그리며 이동합니다.

 

4. SmoothDamp

 

`SmoothDamp`는 목표 지점까지 이동하며 부드러운 감속 효과를 줄 수 있습니다.

 

using UnityEngine;



public class SmoothDampExample : MonoBehaviour

{

    public Transform target;

    public float smoothTime = 0.3f;

    private Vector3 velocity = Vector3.zero;



    void Update()

    {

        transform.position = Vector3.SmoothDamp(transform.position, target.position, ref velocity, smoothTime);

    }

}

 

이 코드는 목표 지점에 도달할 때까지 감속하며 이동합니다. `ref velocity`는 내부적으로 속도 참조를 유지합니다.

 

이러한 다양한 방법들을 활용하여 유니티에서 오브젝트를 목표 지점으로 다양하게 이동시킬 수 있습니다.

728x90
반응형
LIST
글 보관함
최근에 올라온 글
160x600