最近整理代码,由于Cocos3D即将推出,在这把很久之前实现的碰撞分享一下。基于2.1.x
设计目的:满足基本3D碰撞检测,兼顾微信小游戏性能,tag分组。
方案:为性能考虑使用AABB碰撞盒,忽略旋转、碰撞反弹、阻尼,碰撞后仅进行边界修正。这样就基本满足60帧做个3D跑酷、跳跃之类的小游戏了。
思路是:根据force+重力计算下一帧位置>计算是否碰撞>是则判断方位并计算边界修正位置,否则直接应用位置。有更好的思路欢迎留言


实现是很简单的AABB算法,只要理解min最近点,max最远点这两个坐标即可。
以下是判断方法,官方引擎里有2D的实现代码,这里加上z轴就好了。
写的组件,基本模仿Unity,抛出事件也是onCollisionEnter/Stay/Exit(把山寨进行到底。。)
最后吐槽一下官方很多API还是2D,取世界坐标要自己算,珍爱生命大家还是等Cocos3D吧



。