首先,直接弄最难的,旋转矩阵
无非如下,反正原理我不懂
沿着y轴旋转的矩阵为:
先搞个测试代码
using UnityEngine;
[ExecuteInEditMode]
public class MatrixTester : MonoBehaviour
{
public Matrix4x4 _matrix;
void OnEnable()
{
var transform1 = transform;
_matrix.SetTRS(transform1.position,
transform1.rotation,
transform1.localScale);
}
}
Rotation改45度,勾选一下 Matrix Texter 组件
(可以明显看出,就改变了一个y轴,但是4个“地方”改变)
然后,百度一下
(下面一大个数字键盘,其实没用)
结果,0.7和测试结果相符
所以有了以下代码:
//沿着Y轴旋转的矩阵,矩阵图示参考上面博客内容:
Matrix4x4 GetYAxisMatrix(float angle)
{
Matrix4x4 matrix = Matrix4x4.identity;
var angleRad = angle * Mathf.Deg2Rad;
matrix.m00 = Mathf.Cos(angleRad);
matrix.m02 = Mathf.Sin(angleRad);
matrix.m20 = -Mathf.Sin(angleRad);
matrix.m22 = Mathf.Cos(angleRad);
return matrix;
}
// GameObject go = new GameObject("xx");
// Vector3 dir = GetYAxisMatrix(45f) * transform.forward;
// go.transform.position = transform1.position + dir;