수색…
통사론
- void Transform.Translate (Vector3 translation, Space relativeTo = Space.Self)
- void transform.translate (float x, float y, float z, Space relativeTo = Space.Self)
- void Transform.Rotate (Vector3 eulerAngles, Space relativeTo = Space.Self)
- void Transform.Rotate (float xAngle, yAngle 부동, zAngle 부동, Space relativeTo = Space.Self)
- void Transform.Rotate (Vector3 축, 부동 각도, Space relativeTo = Space.Self)
- void Transform.RotateAround (벡터 3 점, 벡터 3 축, 부동 각도)
- void Transform. LookAt (Transform 타겟, Vector3 worldUp = Vector3.up)
- void LookAt (Vector3 worldPosition, Vector3 worldUp = Vector3.up) 무효화되었습니다.
개요
변형은 부모 (들), 자식 (들), 위치, 회전 및 축척을 포함하여 객체에 대한 대다수의 데이터를 단일하게 유지합니다. 또한 각 속성을 수정하는 기능도 있습니다. 모든 GameObject에는 변형이 있습니다.
객체 변환 (이동)
// Move an object 10 units in the positive x direction
transform.Translate(10, 0, 0);
// translating with a vector3
vector3 distanceToMove = new Vector3(5, 2, 0);
transform.Translate(distanceToMove);
객체 회전
// Rotate an object 45 degrees about the Y axis
transform.Rotate(0, 45, 0);
// Rotates an object about the axis passing through point (in world coordinates) by angle in degrees
transform.RotateAround(point, axis, angle);
// Rotates on it's place, on the Y axis, with 90 degrees per second
transform.RotateAround(Vector3.zero, Vector3.up, 90 * Time.deltaTime);
// Rotates an object to make it's forward vector point towards the other object
transform.LookAt(otherTransform);
// Rotates an object to make it's forward vector point towards the given position (in world coordinates)
transform.LookAt(new Vector3(10, 5, 0));
더 많은 정보와 예제는 Unity 문서 에서 볼 수 있습니다.
또한 게임에서 강체를 사용하는 경우 강체의 isKinematic == true
가 아닌 경우 변형을 직접 상호 작용하면 안됩니다. 이 경우 AddForce 나 다른 유사한 방법을 사용하여 강체에 직접 작용하십시오.
육아 및 어린이
Unity는 프로젝트를 체계적으로 유지하기 위해 계층 구조와 함께 작동합니다. 편집기를 사용하여 객체를 계층 구조에 할당 할 수 있지만 코드를 통해이를 수행 할 수도 있습니다.
양육
다음 방법으로 객체의 부모를 설정할 수 있습니다.
var other = GetOtherGameObject();
other.transform.SetParent( transform );
other.transform.SetParent( transform, worldPositionStays );
변형 부모를 설정할 때마다 객체 위치를 월드 위치로 유지합니다. worldPositionStays 매개 변수에 false 를 전달하여이 위치를 상대적으로 만들도록 선택할 수 있습니다.
또, 다음의 메소드를 사용해, 오브젝트가 다른 변환의 아이인지를 확인할 수도 있습니다
other.transform.IsChildOf( transform );
아이를 갖기
객체는 서로간에 부모가 될 수 있으므로 계층 구조에서 자식을 찾을 수도 있습니다. 이 작업을 수행하는 가장 간단한 방법은 다음 방법을 사용하는 것입니다.
transform.Find( "other" );
transform.FindChild( "other" );
참고 : FindChild 호출 후드에서 찾기
계층 구조 아래로 하위 계층을 검색 할 수도 있습니다. "/"를 추가하여 레벨을 더 깊게 지정하십시오.
transform.Find( "other/another" );
transform.FindChild( "other/another" );
자식을 가져 오는 또 다른 방법은 GetChild
transform.GetChild( index );
GetChild는 색인으로 정수가 필요하며 이는 전체 자식 수보다 작아야합니다.
int count = transform.childCount;
형제 색인 변경
GameObject의 자식 순서를 변경할 수 있습니다. 이렇게하면 자식의 그리기 순서를 정의 할 수 있습니다 (동일한 Z 수준 및 동일한 정렬 순서로 있다고 가정 함).
other.transform.SetSiblingIndex( index );
다음 메소드를 사용하여 형제 색인을 첫 번째 또는 마지막으로 신속하게 설정할 수 있습니다.
other.transform.SetAsFirstSibling();
other.transform.SetAsLastSibling();
모든 어린이 분리
변환의 모든 하위 항목을 해제하려면 다음을 수행 할 수 있습니다.
foreach(Transform child in transform)
{
child.parent = null;
}
또한 Unity는 이러한 목적을위한 방법을 제공합니다.
transform.DetachChildren();
기본적으로 루핑과 DetachChildren()
은 첫 번째 깊이 자식의 부모를 null로 설정합니다. 즉, 부모가 없을 것입니다.
(최초의 깊이 자식 : 변형의 직접적인 자식 인 변환)