이동
transform.position = new Vector3(float, float, float);
- 절대좌표를 기준으로 위치시킴(순간이동)
transform.Translate(new Vector3(float, float, float));
- 상대좌표를 기준으로 위치시킴(매 프레임마다 값만큼 이동)
회전
transform.rotation = Quaternion.Euler(float, float, float);
- 절대좌표를 기준으로 회전시킴(순간 회전)
transform.Rotate(float, float, float);
- 상대좌표를 기준으로 회전시킴(매 프레임마다 값만 큼 회전)
프레임 고정
1) 'Edit -> Project Settings -> Time'을 선택 후 'InsPector'에서 'Fixed Timestep'값을 '0.01666667'로 하면 60프레임으로 고정.(30프레임은 '0.03333333'로 하면됨.)
단 'void Update ()'대신 'void FixedUpdate ()'를 사용해야 함.
2) 'void Start ()'또는 'void Awake ()' 같이 시작시 한번 작동하는 함수에서 'Time.captureFramerate = 60;'를 적으면 디스플레이되는 프레임이 강제로 60프레임으로 변경.(30을 적으면 30프레임이 됨.)
출처: https://tenlie10.tistory.com/71 [유니티 게임 개발자]
Transform에는 position, rotation, scale로 위치, 회전, 크기를 담고 있다.
※ Unity는 왼손 좌표계를 사용한다.
빨간색 -> x축 (양수 오른쪽, 음수 왼쪽) 초록색 -> y축 (양수 위쪽, 음수 아래쪽) 파란색 -> z축 (양수 앞쪽, 음수 뒤쪽)
|
※ Transform 과 transform 의 차이
Transform - 게임 오브젝트가 가지는 기본 컴포넌트이다. 위치, 회전, 크기 정보를 담고 있다.
transform - 오브젝트에 할당된 Transform 컴포넌트이다. GetComponent<Transform>() 과 같다.
<위치>
transform.position = new Vector3 (10, 0, 0); // x축, y축, z축 순서 transform 컴포넌트의 position 값을 (10, 0, 0) 으로 바꾼다.
현재 position 값이 (0, 0, 0) 이다. -> (10, 0, 0) 현재 position 값이 (40, 12, 39) 이다. -> (10, 0, 0)
현재 position이 무슨 값이던지, (10, 0, 0) 으로 바꾼다.
|
transform.localPosition = new Vector3 (10, 0, 0);
부모 position의 상대적인 위치로, 부모에서부터 (10, 0, 0) 의 위치로 바뀐다. 부모 position 값이 (10, 10 ,10) 이고, 자식 position의 값은 (10, 0, 0) 이다. -> 자식 오브젝트가 존재하는 실제 월드 상의 좌표는 (20, 10, 10) 이다.
transform.Translate (10, 0, 0);
position의 x값을 10만큼 더 움직인다.
현재 position 값이 (3, 5, 10) 이다. -> (13, 5, 10) 현재 position 값이 (30, 0, 60) 이다. -> (40, 0, 60)
현재 position + (10, 0, 0) 이라고 생각하면 된다.
|
<회전>
transform.rotation = Quaternion.Euler (new Vector3 (10, 0, 0));
transform 컴포넌트의 rotation 값을 (10, 0, 0) 으로 바꾼다.
현재 rotation 값이 (0, 0, 0) 이다. -> (10, 0, 0) 현재 rotation 값이 (40, 12, 39) 이다. -> (10, 0, 0)
현재 rotation이 무슨 값이던지, (10, 0, 0) 으로 바꾼다.
|
transform.Rotate (10, 0, 0);
rotation의 x값을 10만큼 더 회전시킨다.
현재 rotation 값이 (45, 90, 90) 이다. -> (55, 90, 90) 현재 rotation 값이 (30, 0, 60) 이다. -> (40, 0, 60)
현재 rotation + (10, 0, 0) 이라고 생각하면 된다.
|
<크기>
transform.localScale = new Vector3 (10, 10, 10);
transform 컴포넌트의 scale 값을 (10, 10, 10) 으로 바꾼다.
현재 scale 값이 (0, 0, 0) 이다. -> (10, 10, 10) 현재 scale 값이 (40, 12, 39) 이다. -> (10, 10, 10)
현재 scale이 무슨 값이던지, (10, 10, 10) 으로 바꾼다.
|
'Unity' 카테고리의 다른 글
[Unity] 네임스페이스 사용법 (0) | 2019.10.31 |
---|---|
[Unity] 유용한 단축키 정리하기 :D (0) | 2019.10.31 |
[Unity] Json을 이용한 저장/불러오기 방법 (0) | 2019.10.30 |
[Unity] Object 와 UI 구분하기 (0) | 2019.10.29 |
[Unity] Script 내에서 쓰이는 대괄호(속성) 정리 (0) | 2019.10.29 |