Unity中点乘和叉乘对于我们来说的作用是什么?
在 Unity 中,点乘(Dot Product)和叉乘(Cross Product)是向量运算里非常重要的操作,在游戏开发、动画制作、物理模拟等多个方面都有着广泛的应用。
目录
1 点乘
2 叉乘
1 点乘
通过点乘公式 ,可以计算出两个向量之间夹角的余弦值,进而得到夹角大小。在 Unity 中,常用于判断两个物体的朝向关系。例如,在 AI 寻路中,判断敌人是否在主角的视野范围内。
public Transform target;
void Start()
{
Debug.Log("运行");
Vector3 directionToTarget = target.position - transform.position;
float dotProduct = Vector3.Dot(transform.forward, directionToTarget.normalized);
float angle = Mathf.Acos(dotProduct) * Mathf.Rad2Deg;
Debug.Log($"夹角: {angle} 度");
}
2 叉乘
在 3D 图形学中,经常需要计算平面的法向量。通过平面上的两个不共线向量进行叉乘,就可以得到该平面的法向量。
在 Unity 中,可以利用叉乘判断一个向量相对于另一个向量的左右方向。例如,在角色移动控制中,判断角色应该向左还是向右转弯。若叉乘结果的z分量为正,则表示目标向量在参考向量的右侧;若为负,则在左侧。
示例: