이번 포스팅은 유니티의 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에서만 가능한듯)
(현재위치, 목표위치, 속도혹은 시간) 매개변수로 간다.
'관 > 핫한 유니티 공부' 카테고리의 다른 글
2021 다시 공부하는 유니티 01(클래스와 상속). (0) | 2021.03.13 |
---|---|
유니티 델타타임과 엔진으로 실제 물리적인 오브젝트 만들기. (2) | 2020.08.17 |
알아두면 편한 유니티 엔진에서 제공하는 간편한 입력기능. (0) | 2020.08.14 |
유니티의 작동방식 파악하기. (2) | 2020.08.12 |
스크립트 작성을 위해 알아야 하는 C# 내용. (0) | 2020.08.11 |
댓글