PS:本系列笔记将会记录我此次在北京学习Unity开发的总体过程,方便后期写总结,笔记为日更。
笔记内容均为 自己理解,不保证每个都对
点乘求角度,叉乘求方向
比如敌人再附近,点乘可以求出玩家面朝方向和敌人方向的夹角,叉乘可以得出左转还是右转更好的转向敌人
Part 1 点乘:
数学上的 点乘为 a * b = |a| * |b| * cos(Θ)
Unity中的点乘也是如此 点乘结果为 float 是投影长度
点乘的主要作用就是,点乘求角度。 Θ = Arcos( a * b / |a| * |b|)
代码实现:
float tmpNormalized = Vector3.Dot(attacked.right.normalized, tmpDistance.normalized); //计算出在攻击方向的单位向量上的投影
float tmpRadian = Mathf.Acos(tmpNormalized); //计算出弧度
float tmpAngle = Mathf.Rad2Deg * tmpRadian; //弧度转换为角度
点乘的方法是
Vector3.Dot(向量A,向量B); 得到的结果是数 即 B在A上的投影长度
例如:
tmpDistanceX = Vector3.Dot(attacker.right, tmpDis); //即tmpDis 在 attacker.right向量上的投影长度
点乘的简单应用A:设置矩形体区域
/// <summary>
/// 以攻击点为中心,长为 2 * distance 宽为 2 * half 高为2 * height的矩形体范围
/// </summary>
/// <param name="attacker">生成范围的中心点的位置</param>
/// <param name="attacked">目标物体的位置</param>
/// <param name="half">中心点到两侧的宽度,实际宽度为2倍长度</param>
/// <param name="distance">中心点到最远攻击点的距离</param>
/// <para