수색…


통사론

  • 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로 설정합니다. 즉, 부모가 없을 것입니다.

(최초의 깊이 자식 : 변형의 직접적인 자식 인 변환)



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow