빗물받는 르탄이 강의 중, 4번 캐릭터 움직이기에서 transform과 Vector3를 사용하는것이 나옵니다.
해당 스크립트에 관한 정보를 정리해보도록 하겠습니다.
transform 의 Unity 메뉴얼
https://docs.unity3d.com/kr/2021.3/Manual/class-Transform.html
transform 은 unity에서 사용되는 오브젝트의 위치 좌표, 오브젝트의 각도, 크기를 저장하고 있는 컴포넌트입니다.
이 컴포넌트는 모든 오브젝트에서 필수적으로 존재하며, 빈 오브젝트를 생성해도 기본적으로 이 컴포넌트가 있는것을 확인 할 수 있습니다.
해당 컴포넌트를 스크립트에서 조작할 수 있습니다.
https://docs.unity3d.com/ScriptReference/Transform.html
this.transform
형태로 Transform 컴포넌트를 조작할 수 있으며, this. 부분은 생략이 가능합니다.
해당 형태로 사용할경우, 이 스크립트가 붙은 오브젝트의 transform을 사용하게되며 this. 부분을 GameObject 변수를 지정하여 사용할 경우, 지정한 오브젝트의 transform을 변경하게 됩니다.
transform 컴포넌트의 구성요소로 좌표, 회전값, 크기 3개가 있습니다.
각각 다음의 방식으로 조작할 수 있습니다.
//좌표 조작
transform.position
//회전 조작
transform.rotation
//크기 조작
transform.Scale
해당값들은 Vector3의 형식으로 저장되어있기 때문에 Vector3를 사용하여 연산을 해주어야 합니다.
//좌표 조작, 매 호출마다 position 값을 (1, 1, 1) 만큼 증가
transform.position += Vector3.one;
//회전 조작, 매 호출마다 rotation 값을 (1, 1, 1) 만큼 증가
transform.rotation *= (Quaternion.Euler(Vector3.one));
//크기 조작, 매 호출마다 scale 값을 (1, 1, 1) 만큼 증가
transform.localScale += Vector3.one;
rotation 의 경우, +- 연산이 불가능하며 축의 뒤틀림을 방지하기 위해 Quaternion 을 사용합니다.
해당부분은 이후에 따로 정리할 필요가 있으니 지금은 생략하도록 하겠습니다.
transform.position 에 + 연산을 해주면 컴포넌트의 Transform 값이 더해준 값 만큼 증가하게 됩니다.
transform 을 사용하여 오브젝트를 움직인다 라고 생각하시면 됩니다.
또한 transform에서 사용할 수 있는 함수들이 있습니다.
//호출될 때마다 (1, 0, 0) 만큼 position 증가
transform.Translate(Vector3.right);
//호출될 때마다 오브젝트의 z축이 (0, 0, 0) 를 보도록 만든다
transform.LookAt(new Vector3(0, 0, 0));
//호출될 때마다 (1, 0, 0) 만큼 rotation 증가
transform.Rotate(Vector3.right);
이 외에도 다양한 활용이 가능하지만, 오브젝트의 움직임을 표현할 때, 주로 이러한 함수를 사용합니다.
Vector3 의 Unity 매뉴얼
https://docs.unity3d.com/kr/530/ScriptReference/Vector3.html
Vector3 는 3차원 좌표를 표현하기 위해 사용되는 구조체로, 위치와 방향을 전달하거나 벡터 연산을 실행할수도 있습니다.
Vector3 를 변수로 선언할경우, 이러한 규칙을 따라야합니다.
//Vector3 변수 선언
private Vector3 newVector = new Vector3(1,1,1);
자체적으로 선언되어있는 속성을 사용할경우 이러한 선언을 하지 않아도 됩니다
private Vector3 newVector = Vector3.one;
Vector3 에는 다음과 같은 값이 속성으로 존재합니다.
Vector3.one | Vector3.zero | Vector3.right | Vector3.up | Vector3.forward | Vector3.left | Vector3.down | Vector3.back |
(1, 1, 1) | (0, 0, 0) | (1, 0, 0) | (0, 1, 0) | (0, 0, 1) | (-1, 0, 0) | (0, -1, 0) | (0, 0, -1) |
또한 Vector3에 선언된 함수를 통해, 벡터연산을 할 수 있습니다.
//벡터의 크기
Vector3.Magnitude();
//벡터의 크기(루트 연산을 하지 않아 메모리를 덜 소모함)
Vector3.SqrMagnitude();
//단위벡터화
Vector3.Normalize();
float 값으로 각 x, y, z 벡터를 따로 받아줄 수도 있습니다
//벡터 선언
private Vector3 newVector = new Vector3(3, 2, 1);
//벡터의 x값 : 3저장
float x = newVector.x;
//벡터의 y값 : 2 저장
float y = newVector.y;
//벡터의 z값 : 1 저장
float z = newVector.z
'사전캠프 > Unity' 카테고리의 다른 글
2주차 강의 - 떨어지는 네모를 없에기 (0) | 2024.08.21 |
---|---|
Unity 레거시에 대하여 (0) | 2024.08.21 |
디자인 패턴 - 싱글톤 패턴 (0) | 2024.08.20 |
빗물받는 르탄이 - 빨간 빗방울 만들기 (0) | 2024.08.20 |
유니티의 라이프사이클 (0) | 2024.08.19 |