Menu
CoddyTech

한 지점으로 이동하기

Coddy Unity 여정의 Unity 스크립팅 기초 섹션에 포함된 레슨. 67개 중 27번째.

Vector3.MoveTowards(current, target, maxStep)는 target에 최대 maxStep만큼 더 가까운 점을 반환합니다. 목표가 그보다 가까우면 목표 자체를 반환하므로, 지나쳐 가지 않습니다. 이동 단계로 speed * Time.deltaTime을 사용하면 객체는 일정한 속도로 이동해 목표에 정확히 멈춥니다. 이 케이블카는 초당 2유닛의 속도로 역까지 미끄러지듯 이동합니다.

public Vector3 station = new Vector3(6, 3, 0);
public float speed = 2f;

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

도착한 뒤에는 이후 호출에서 계속 station을 반환하므로 케이블카는 그 자리에 머물고, transform.position == station은 참입니다. 하나의 숫자에는 Mathf.MoveTowards가 같은 방식으로 작동합니다.

Vector3.Lerp(a, b, t)는 a에서 b까지 가는 길의 t 비율만큼 떨어진 점입니다. t = 0.5이면 중간 지점입니다. Update()에서 Lerp(transform.position, station, 2f * Time.deltaTime)으로 작성하면 매 프레임 남은 거리의 일정 비율만큼 이동합니다. 처음에는 빠르고, 끝에 가까워질수록 점점 느려져, 정해진 속도로 도착하는 대신 조금씩 가까워집니다. 객체가 정해진 속도로 이동해 정확히 멈춰야 한다면 MoveTowards를 사용하고, 부드럽게 감속하려면 이 Lerp 패턴을 사용하세요.

challenge icon

챌린지

중급

드론은 Space를 누를 때까지 공중에서 대기합니다. 그때부터 초당 speed 단위의 속도로 직선으로 pad, 즉 착륙 패드의 위치까지 날아가 정확히 착륙합니다. 착륙하면 Landed를 한 번 기록하며, 그 이후 매 프레임마다 다시 기록하지는 않습니다.

Play를 누르고 Space를 누른 다음 Check를 누르세요.

직접 해보기

using UnityEngine;

public class Drone : MonoBehaviour
{
    public Vector3 pad = new Vector3(0, 0.25f, 0);
    public float speed = 2f;

    void Update()
    {
        // Space를 누른 후: speed로 pad까지 비행하고, 도착하면 Landed를 한 번 로그에 기록
    }
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Unity 스크립팅 기초의 모든 레슨