Obstacle Avoiddance之世界空间的坐标转局部空间坐标推导

       根据《游戏人工智能编程案例精粹》第三章中中方法描述,整个算法中需要将世界空间的点转到局部空间。比如场景中有若干障碍物,但并不是每一个都需要检查,也就是先要筛选。这个筛选过程中过滤掉“后面”的障碍物是很重要的环节。所谓“后面”是相对的,是根据朝向来判断的。比如我现在正前方5米有一个障碍物,这个正前方是我移动的方形。那这个障碍物是应该要被检查的。如果我现在转向180度,移动方向就完全背对这个障碍物,虽然我们之间的距离还是5米,但这时不需要检查的。这就是局部坐标空间的典型应用。

        这个可能有个疑问,Unity不是已经提供很方便的转换吗?Transform.Translate还有Transform.worldToLocalMatrix。但是,在某些场景下还是有必要的。比如游戏是帧同步的,位置,方向这些都不能依赖Transform,而是逻辑层自己计算。因为帧同步为了避免浮点数带来的差异需要定点数计算,而且需要做到逻辑层和显示层分离。这两点中任意一点Transform都不能满足。

       原书配套代码中将世界空间的点转到局部空间,但没有展开讲这个局部空间变换的过程。在其提供的源码中分两个函数实现。

      这套书的配套源码人工游戏智能编程案例精粹配套源码Programming-Game-AI-by-Example

//--------------------- PointToLocalSpace --------------------------------
//
//------------------------------------------------------------------------
inline Vector2D PointToL
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值