向量的点乘和叉乘在游戏中的应用
2017-11-16 22:56
369 查看
点乘的应用:
(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时,在自己的正左方或者正右方。
(6)模拟飞机飞行的状态,当飞机与vector3.up的点积等于0,证明飞机平行飞行;当小于0时候,证明飞机向下飞行;当大于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)将炮管的正方向向量 与 敌人位置减去炮管位置的向量 进行叉积,得到一个向量,炮管绕此向量旋转,可以使炮管旋转至对准敌人,实现定位敌人的作用。
相关文章推荐
- 向量的点乘和叉乘在游戏中的应用
- 向量的点乘、叉乘在Unity中的应用区别与原理
- 向量在游戏开发中的应用(一)
- 向量的点乘与叉乘
- 向量的点乘与叉乘
- 向量的点乘和叉乘
- 向量点乘(内积)和叉乘(外积、向量积)概念及几何意义解读
- 向量点乘与叉乘
- 向量 - 向量叉乘 向量点乘
- 向量的点乘和叉乘
- [Unity游戏开发]向量在游戏开发中的应用(三)
- 向量在游戏开发中的应用(二)
- HDU-2108-Shape of HDU(Java+向量叉乘的简单应用)
- 向量的点乘和叉乘
- (转)向量的点乘和叉乘
- 二维向量叉乘的简单介绍及应用
- [cnblogs镜像]Unity 向量点乘、叉乘
- 向量的点乘叉乘
- 向量的点乘与叉乘的几何意义
- 转载 向量点乘(内积)和叉乘(外积、向量积)概念及几何意义解读