ecsimsw

translate / position, Translate / Time.deltaTime 본문

translate / position, Translate / Time.deltaTime

JinHwan Kim 2019. 1. 26. 23:47

Translate

  • Vector3
    - Vector3는 3차원 공간에서의 위치와 벡터를 표현하기 위해 사용되는 "구조체"이다.
    (좌표를 구조체로 표현하는 이유는 C#-class/struct 포스팅에서 정리하였다.)
    Vector3 v = new Vector3(1, 1, 1);
      위와 같이 생성자를 통해 생성하여 사용하거나 Vector3.forward(= Vector3.(0,0,1))처럼 static 변수를 통해 간단히 사용할 수 있다.
    쓰임이 많고 중요하다고 생각하기 때문에 Vector3만을 따로 공부 후 포스팅 할 생각이다.
  • transform.position
    - 오브젝트의 transform의 position 값을 변경하여 물체의 위치를 바꿀 수 있다.
    transform.position = new Vector3(1,1,1);
      transform.position에 바로 생성한 좌표를 대입하는 것으로 위치를 (1,1,1)으로 이동하였다.
    transform.position += new Vector3(1,1,1);
      마찬가지로 위 처럼 현재 위치에 좌표를 더해 이동을 구현할 수 도 있다.
  • transform.Translate
    - Translate 메소드를 사용할 수 도 있다. translate를 사용하면 해당 축으로 프레임마다의 변화를 줄 수 있다.
    transform.Translate(new Vector3(0,0,1)*Time.deltaTime);
      이때 방향 기준은 position 예와 달리, 상대 좌표를 기준으로 하기 때문에 월드 좌표를 기준으로 이동하고자 한다면 다음처럼 인자에 Space.World를 추가하는 것으로 기준을 바꿀 수 있다.
    transform.Translate(new Vector3(0,0,1)*Time.deltaTime, Space.World);
      Translate 메소드는 프레임 당 변화를 주기 때문에 기기에 따라서 다른 이동 속도를 낼 수 도 있다. 이것을 방지하기 위해 Time.deltaTime을 방향에 곱했는데, 이는 프레임 당의 변화가 아닌 초당 변화를 주어 사용자의 프레임 률(frame rate)에 독립적으로 기능을 적용할 수 있다.

'Etc > Unity' 카테고리의 다른 글

Rigidbody / AddForce / AddTorque  (0) 2019.01.28
Accessing other gameobjects  (0) 2019.01.27
Rotate / Euler angle / Quaternion  (0) 2019.01.27
Game object / Compoenets / Accessing /Tag  (0) 2019.01.17
Unity Screen Configuration  (0) 2019.01.16
Comments