Описание
Создает матрицу перемещения, поворота и масштабирования.
Возвращенная матрица такова, что объекты размещаются в позиции pos
,
ориентировано по вращению q
и масштабировано s
.
using UnityEngine;
public class ExampleScript : MonoBehaviour
{
// Перевести, повернуть и масштабировать сетку. Попробуйте изменить
// параметры в инспекторе во время работы
// чтобы увидеть эффект, который они имеют.
public Vector3 translation;
public Vector3 eulerAngles;
public Vector3 scale = new Vector3(1, 1, 1);
MeshFilter mf;
Vector3[] origVerts;
Vector3[] newVerts;
void Start()
{
// Получить компонент фильтра Mesh, сохранить исходные вершины
// и делаем новый массив вершин для обработки.
mf = GetComponent<MeshFilter> ();
origVerts = mf.mesh.vertices;
newVerts = new Vector3[origVerts.Length];
}
void Update()
{
// Установить кватернион из указанных углов Эйлера.
Quaternion rotation = Quaternion.Euler(eulerAngles.x, eulerAngles.y, eulerAngles.z);
// Установите параметры перевода, поворота и масштабирования.
Matrix4x4 m = Matrix4x4.TRS(translation, rotation, scale);
// Для каждой вершины...
for (int i = 0; i < origVerts.Length; i++)
{
// Apply the matrix to the vertex.
newVerts[i] = m.MultiplyPoint3x4(origVerts[i]);
}
// Скопируйте преобразованные вершины обратно в меш.
mf.mesh.vertices = newVerts;
}
}
Смотрите так же: TRS, Rotate, Scale, Translate, SetTRS functions.