Unity 模拟智能
🎮
寻路向量公式
Vector = target.position - now.position
将其单位化然后在 Update() 内执行
留意:
Vector3.magnitude 标量
Vector3.normalized 矢量
7
调整了屏幕尺寸计算最终坐标 相机size 是100
如果屏幕尺寸是16:9的话,那么x 的右坐标计算终点是 100 * 16/9 = 177.7777~
8
向量符号
1 | transform.Translate(goal.transform.position) |
10 如何走到跟前停下
用if语句,暂存一个值检测距离👇
1 | using System; |
11
终点 - 起点
12
显而易见 Vector3.sqrMagnitude() 的数值更大,节省性能
13
点乘
用途👇
- 验证两个向量是否垂直
- 两个向量的方向接近度越大越相似
叉乘
用途👇
- 找法向量
14 计算角度
以上等同于👇
Vector3.Angle(矢量1,矢量2)
Unity也提供了
1 | Vector3.Dot(本体朝向方向, 目标朝向方向); |
Mathf.Acos() 是求cos的反函数
【某个向量】.magnitude 可以直接算出来它的模
Mathf.Rad2Deg 将弧度数转换为相应的角度数,
在弧度后面乘上Mathf.Rad2Deg就能转换了(弧度一般是一个数π/X)
15 判断朝向等向量问题
unity提供了
1 | Vector3.Cross(本体朝向方向, 目标朝向方向); |
叉乘来判断最优转向角,根据敌人的方位,判断我们应该向什么方向是最快的
总结
简单来说,在两个物体的位置关系判断中。
点乘可以判断出目标物体在我的前方还是后方。大于零在前方,小于零在后方。
叉乘可以判断出目标物体在我的左边还是右边。大于零在右方,小于零在左方。
点乘 多用于找角度
叉乘找法向量、还有证明当前是往左转还是往右转、叉乘算还能算线线交点
顺时针为 负
逆时针为 正
cosθ = 点乘/模的积
sinθ = 叉乘/模的积
16&17 修正游戏对象的正脸朝向
其实Unity提供了一个好用的函数 transform.LookAt(target) ;
18 以时间为频率,而不是用GPU、CPU
Time.realtimeSinceStartup
这个函数用来统计从游戏一开始计时
一般刚体的运动放置在 FixedUpdate() 里
22
Vector3.forward 是一个定值,它没有任何意义!它仅仅代表Vector3(0,0,1),仅此而已
transform.forward 他是一个用来自动对物体旋转值算出前进方向向量的变量。
1 | void MyTranslate(Vector3 dir){ |
transform.rotation是个四元素,表示一个旋转值,后面dir是一个向量,用一个四元素去乘以一个向量,得到的结果是经过四元素旋转之后的向量,以后关于计算角度与向量之间的关系,都可以用这个方法算出来。
炮弹抛物线轨迹
rb.AddForce() 给刚体一个力,因为是一瞬间的,应该放在 Start() 函数内
👇麦克老师也是这样