1、缩放矩阵
2、示例代码
using UnityEngine;
using System.Collections;
public class MyTransform : MonoBehaviour
{
public Matrix4x4 matrix; //平移矩阵
public Vector4 v; //临时存储矩阵变换之后的点
public Vector4 startPos; //物体初始位置
public Vector4 startScale; //物体初始缩放
public float x = 1; //x轴平移/缩放
public float y = 1; //y轴平移/缩放
public float z = 1; //z轴平移/缩放
/// <summary>
/// 记录初始位置
/// </summary>
private void Start()
{
startPos = new Vector4(transform.position.x, transform.position.y, transform.position.z, 1);
startScale = new Vector4(transform.localScale.x, transform.localScale.y, transform.localScale.z, 1);
}
/// <summary>
/// Update中平移
/// </summary>
private void Update()
{
//MyTranslate();
MyScale();
}
/// <summary>
/// 平移函数
/// </summary>
private void MyTranslate()
{
matrix = Matrix4x4.identity; //单位矩阵
matrix.m03 = x;
matrix.m13 = 4;
matrix.m23 = 5;
v = matrix * startPos;
transform.position = new Vector3(v.x, v.y, v.z);
}
/// <summary>
/// 缩放函数
/// </summary>
private void MyScale()
{
matrix = Matrix4x4.identity;
matrix.m00 = x;
matrix.m11 = y;
matrix.m22 = z;
v = matrix * startScale;
transform.localScale = new Vector3(v.x, v.y, v.z);
}
}
3、将两个脚本放在一个空物体上
4、拖拽Inspector面板,则可以看到缩放结果: