본문 바로가기
관/핫한 유니티 공부

유니티의 벡터2 알아보기.

by 4차원 박스 2020. 8. 15.

이번 포스팅은 유니티의 Transform컴포넌트의 이동하는 함수를 알아본다.

대표적인 이동관련 함수인 벡터계열을 알아보고 그중에서 벡터2를 구체적으로 알아본다.

오브젝트는 Transform 이라는 오브젝트 에 대한 기본 컴포넌트를 항상 가진다.

이는 또한 하나의 클래스 이다. 하지만 인스턴스 선언하지 않아도 transform이라는 초기화된 변수를 유니티 에서 제공해 준다.

 

Translate() 메소드는 매개변수로 들어가는 벡터값을 현재위치에 더하는 함수이다. 즉 벡터값 만큼 해당 축 방향으로 이동하는 것이다.

 

유니티에서 벡터(Vector)는 뒤에 숫자가 붙어서 3차원 2차원 으로 구분하여 사용한다.

아래와 같은 형태이다.

Vector2 vec=new Vector2(0,0) 이런식으로 사용하며 x,y축 값이 0이다.

 

void Update()

{

Vector2 vec = new Vector2(10, 0);

transform.Translate(vec);

}

 

좀더 구체적인 방식으로 이렇게 사용한다.

 

 

void Update()

{

Vector2 vec = new Vector2(0.1f, 0); //업데이트는 계속 실행되는 부분이므로 0.1씩 이동시켜주는 함수이다.

transform.Translate(vec);

}

 

 

이렇게 만든 스크립트를 메인카메라에 붙여넣으면 카메라와 오브젝트가 같이 움직이게 된다.

 

 

void Update()

{

Vector2 vec = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));

transform.Translate(vec);

}

 

이렇게 하면 키보드로 입력한 것 그대로 이동할 수 있다.

 

아래는 Vector2 에서 제공하는 메서드 이다.

 

1. MoveTowards = 등속이동 함수, 매개변수는 (현재위치, 목표위치, 속도혹은 시간) 으로 구성

 

public class tuto1 : MonoBehaviour

{

Vector2 target = new Vector2(5, 0);

 

void Start()

{

 

}

 

void Update()

{

transform.position = Vector2.MoveTowards(transform.position, target, 0.1f);

 

}

 

 

}

 

이렇게 사용한다. 위에서 타겟이라는 변수에 목표위치의 좌표값을 넣고

목표위치를 잡은후, 현재위치에서 타겟까지 0.1의 속력으로 움직임.

속력에 비례하여 빠르게 이동한다.

 

현재위치를 반환하는 함수에다 MoveTowards의 값을 넣음으로 작동한 것이다.

 

 

 

2. SmoothDamp 함수 = 매개변수 (현재위치, 목표위치, 참조속도, 속도)

 

여기서 마지막 매개변수인 속도에 반비례하여 움직이는 속도가 증가한다.

차이점은 부드럽게 목표지점에 착지한나는 것이다.

 

ref 는 참조접근으로 실시간으로 바뀌는 값에 적용가능하게 한다.

 

Vector2 velo = Vector2.zero; //참조값이 0이라는것.

transform.position = Vector2.SmoothDamp(transform.position, target, ref velo, 0.1f);

 

이렇게 사용한다

  

Vector2 velo = Vector2.up*50; 이렇게하면 위로 올라가고 x축에 는 맞게된다. (이함수에서 up*50은 일단은 사용하지만 일반적으로 사용하지 않는다.)

 

3. Lerp = 선형보간, SmoothDamp보다 감속시간이 길다 매개변수는 MoveTowards와 같다.

 

(현재위치, 목표위치, 속도혹은 시간) 이렇게 된다. 마지막 변수에 비례하여 속도가 증가한다. 최대는 1이다.

 

transform.position = Vector2.Lerp(transform.position, target, 0.01f);

 

이렇게 사용한다.

 

4. SLerp = 구면 선형보간, 호를 그리며 이동하는 방식임.(이건 vectror3에서만 가능한듯)

(현재위치, 목표위치, 속도혹은 시간) 매개변수로 간다.

댓글