您的位置:首页 > 移动开发 > Unity3D

unity中的利用Matrix4x4实现缩放

2016-12-26 09:43 489 查看
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面板,则可以看到缩放结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: