[Unity] 오브젝트 위치 이동시키기

jh Seo·2022년 7월 9일
1

유니티

목록 보기
1/42

개요

오브젝트를 움직이는 데 아는 방법들을 정리해보려고 한다.
새로운 내용을 아는데로 계속 추가해나갈것.

방법

  • 제일 기본적인 방법으로는
    transform.position에 vector3 값을 직접 넣거나
    연산을 하여 움직이게 하는 방법이 있다.
    이 방식대로하면 순간이동을 하게된다.
transform.position +=  new Vector3.Left * speed * Time.deltatime

이런식으로 원하는 방향에 속도값과 Time.deltatime을
연산 해주게되면 순간이동이 아니라
일정한 속도로 가게끔 할 수 있다.

  • Transform.Translate
    이동할 벡터 방향과,
    월드 좌표계로 움직인다면 space.world
    로컬 좌표계로 움직인다면 space.self
    를 넣어주면 해당 방향으로 이동한다.

    이 함수도 update문으로 사용한다면 초당 60프레임으로
    불러지게되어 순간이동 하게 되므로
    Time.deltatime을 사용해야 일정속도로 움직인다.

  • Vector3.MoveTowards
    Vector3의 함수인 MoveTowards는 일정한 속도로
    목표 지점까지 가게 한다.
    Vector3.MoveTowards(시작 벡터, 목표 벡터, 속도)
    를 매개변수로 넘겨주는데 속도는 입력값에 비례해 달라진다.

  • Vector3.SmoothDamp
    Vector3의 함수인 SmoothDamp는 일정한 속도가 아닌
    목표지점에 다가갈수록 감속해서 이동시키는 함수이다.

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

    인자는 각각 시작 벡터, 목표 벡터, 속도, 도달하는데 걸리는 시간으로 실시간으로 변화하는 속도량을 그래프상으로 부드럽게 만들기 위해
    이전 값의 변화량을 알 수 있으면서, 현재 변화량을 기록해 넣을 수 있는 값의 변화량을 저장하는 ref형으로 속도 변수를 받는다.

  • Vector3.Lerp

    Vector3.Lerp(시작좌표, 종료좌표, t)
    Mathf.Lerp(시작 값, 종료 값, t)
    Quaternion.Lerp(시작 각도, 종료각도 ,t)

    선형보간을 이용한 목표지점으로 이동하는 방법으로,
    smoothdamp와 비슷한 효과가 나온다.
    인자로는 시작 벡터, 목표벡터, 0~1사이 숫자가 들어가며,
    0~1사이 숫자는 속도의 가중치를 나타내며
    0을 입력시 안 움직이고 1넣으면 순간이동하게 된다.

  • Vector3.Slerp
    구형보간을 이용한 목표지점으로 이동하는 방법으 로, 구면을 따라 이동하므로 시간이 증가함에따라
    시작점과 종료점은 느리게 증가하고 중간 지점은
    동일시간 대비 많은 거리를 이동하므로 빠르게 이동한다.
    호를 그리며 이동을 한다.
    인자는 lerp함수와 같다.

profile
코딩 창고!

0개의 댓글