2.5D视角游戏怎么检测碰撞?

怎么碰撞检测

  • 添加了cc.CircleCollider2D组件,cc.RigidBody2D组件,不知道是不是因为x方向有45°旋转,还是检测不了碰撞,该怎么办?

怎么碰撞检测1


1赞

可以在2D地面上检测

画面挺舒服的。

你就用一个正方体碰撞盒把树干的部分抱起来就行,上下方向薄一些就可以

给树添加碰撞体,人物做刚体+碰撞,2.5d最重要的是把Z轴统一,剩下的则是vec2运算了

如果不需要物理效果,builtin2d效率远不如自己写…

如果没有特殊的要求,其实不需要物理,使用距离运算即可

怎么写?有没有有关的案例或者文章?

怎么使用距离运算?有没有有关的案例或者文章?

我知道楼主遇到的问题的原因了,之前没有仔细看。。。你做2.5D的项目必须用3D物理!!!

“ * 添加了cc.CircleCollider2D组件,cc.RigidBody2D组件,不知道是不是因为x方向有45°旋转,还是检测不了碰撞,该怎么办?”这是你的原话,把cc.CircleCollider2D和cc.RigidBody2D都换成3D的,地面也加上3D的碰撞盒应该就可以了,2D的组件不能用在3D下,2D用的是box2d,3D的有phyX和别的,这些都不能串着用,你还是用立方体做物理吧

是用2d做的2.5d吗?

他用的3.x版本,是3D的,你看他的旋转就不像,应该是开了正交视角的相机做的3D场景,他用的2D物理肯定不行

我也还纳闷,看他添加2d的碰撞组件,却做到了3d的旋转效果,正在想现在2d能做这么逼真了嘛

玩家的眼睛终究还是人眼,你觉得怎样会撞到就那样设计就对了,
你会发现2.5d的碰撞就是3D

如果不需要精确碰撞的话,只需要将不可达区域用方块标记出来即可,然后人物的碰撞区域和不可达区域做是否相交判断就可以

2.x cc.Intersection.rectRect
3.x Intersection2D.rectRect

不知道怎么用Intersection2D,有关2.5D出新视频时演示一下,我小白一个,没有示例不知道怎么写了

在lateUpdate中,遍历场景中的node。做距离检测(也可以用形状),距离小等于设定的半径即为碰撞,然后将检测到的node传递给自定义的triger方法。可以只遍历指定集合中的node,例如GameApp.enemyList/ GameApp.hourseList.以提高遍历性能。