点乘的应用:(1) 点乘可以用来判断两个向量是否垂直,返回值为0,则垂直。(公式:abcosθ,向量夹角θ为90度,则垂直) (2)本质上其实是判断两个向量相似的程度(2个向量夹角越小,越相似)。 (3)计算敌人在你的正方向上行走的距离,利用的是计算一个向量在另一个向量上的投影分量大小(根据点乘几何意义) (4)得到2个向量的夹角:范围[0, 180] ,可以做游戏怪物的视角是否有查看到玩家,可以用来计算敌人是否在角色的攻击范围之内 Vector A,B;float dotValue = Vector3.Dot (A.normalized, B.normalized); float angle = Mathf.Acos(dotValue) * Mathf.Rad2Deg; 当然,更简单的方法是float Vector3.Angle (Vector3 from, Vector3 to) (5)判断目标在自己的前后方位 Vector3.Dot(transform.forward, target.position) 返回值为正时,目标在自己的前方;返回值为负时,在自己的后方;返回值为0时,在自己的正左方或者正右方。
叉乘的应用:(1)叉乘可以用来判断两个向量是否平行或相交。返回值为0,则平行。 (2)用于求平面法线(叉乘的几何意义:absinθ) (3)计算两个物体之间形成四边形的面积(|a||b|sinθ) (4)得到2个向量的夹角:范围[-90,90] Vector A,B;float value = Vector3.Cross (A.normalized, B.normalized); float angle = Mathf.Asin(value) * Mathf.Rad2Deg; (5)判断目标在自己的左右方位 Vector3.Cross(transform.forward, target.position).y 返回值为正时,目标在自己的右方;返回值为负时,在自己的左方;返回值为0时,在自己的正前方或者正后方。 (6)将炮管的正方向向量 与 敌人位置减去炮管位置的向量 进行叉积,得到一个向量,炮管绕此向量旋转,可以使炮管旋转至对准敌人,实现定位敌人的作用。 |
|
来自: W_R_F > 《KnowLedge》