Unity/2

[Unity] Vector3.MoveTowards

조민상 2023. 12. 28. 18:21

Vector3.MoveTowards 는 현재 위치에서 목표 위치로 일정한 속도로 이동하는 함수이다. 현재 위치, 목표 위치, 속도를 인자로 넘겨주고 transform.position에 대입하면 된다. 속도 값이 작을 수록 빠르게 이동한다. 아래는 예제 코드이다.

public class MoveTowards : MonoBehaviour
{
    Vector3 Target = new Vector3(1, 1, 0);
    float Speed = 1f;

    void Update()
    {
    transform.position = Vector3.MoveTowards(transform.position, Target, Speed * Time.deltaTime);
    }
}

 

이 함수를 이용하여, 오브젝트가 목표위치 네곳을 반시계 방향으로 반복적으로 돌아가는 코드를 만들어보았다.

public class MoveTowards : MonoBehaviour
{
    Vector3 Target = new Vector3(0, 0, 0);
    Vector3 Target2 = new Vector3(5, 0, 0);
    Vector3 Target3 = new Vector3(5, 5, 0);
    Vector3 Target4 = new Vector3(0, 5, 0);
    float Speed = 1f;

    void Start()
    {
        transform.position = Target;
    }
    void Update()
    {
        if(transform.position.x < 5 && transform.position.y == 0)
        {
        transform.position = Vector3.MoveTowards(transform.position, Target2, Speed * Time.deltaTime);
        }
        if(transform.position.x == 5 && transform.position.y < 5)
        {
        transform.position = Vector3.MoveTowards(transform.position, Target3, Speed * Time.deltaTime);
        }
        if(transform.position.x > 0 && transform.position.y == 5)
        {
        transform.position = Vector3.MoveTowards(transform.position, Target4, Speed * Time.deltaTime);
        }
        if(transform.position.x == 0 && transform.position.y > 0)
        {
        transform.position = Vector3.MoveTowards(transform.position, Target, Speed * Time.deltaTime);
        }
    }
}