Gizmos.matrix 会存储 Gizmos 的位置、旋转和缩放。默认情况下,Gizmos 始终使用世界坐标。Gizmos.matrix 默认使用默认单位矩阵转换世界坐标。Transform.localToWorldMatrix 将局部坐标空间更改为世界空间。
GameObject 经常使用局部坐标。Gizmos.matrix 会将这些局部坐标更改为世界坐标,让 Gizmos 可以使用这些局部坐标。例如,旋转对象会使用局部坐标。使用 Gizmos.matrix 可以将这些坐标转换为世界坐标。要对对象进行可视化,请使用 Gizmos.DrawCube。见下文。
要使用该示例绘制红色半透明方体图元
1. 在原点的圆柱体上放置该示例脚本。
2. 在层次结构中选择圆柱体,然后单击 Play
按钮。
3. 接下来,单击 Scene
按钮。此时图元应当已出现。
圆柱体将在 Play
模式中旋转,并在 Scene
视图中显示它正在旋转。
using System.Collections; using System.Collections.Generic; using UnityEngine;
// Gizmos.matrix example
public class Example : MonoBehaviour { // Allow the speed of rotation to be changed. public float rotationSpeed = 50.0f;
void OnDrawGizmosSelected() { Gizmos.color = new Color(0.75f, 0.0f, 0.0f, 0.75f);
// Convert the local coordinate values into world // coordinates for the matrix transformation. Gizmos.matrix = transform.localToWorldMatrix; Gizmos.DrawCube(Vector3.zero, Vector3.one); }
// Rotate the cylinder. void Update() { float zRot = rotationSpeed * Time.deltaTime; transform.Rotate(0.0f, 0.0f, zRot); } }