有个机制很难受不知道怎么处理,跟gemini聊了很久虽然有办法解决但不知道是不是官方推荐做法。
问题:2d游戏在box2d引擎下,父节点添加刚体、collider2d,子节点只添加collider2d(攻击检测节点等), 这差不多是动作类游戏常用的做法。 但是只添加了collider的子节点监听不到碰撞, 只有父节点能监听,而且只要添加了collider子节点的视图是跟着父节点移动 但是collider会留在原地(debug可见),而且这个留在原地的collider还会和父节点发生碰撞
现有解决方式: collider只在父节点添加多个,子节点只用于显示视图不绑定刚体和collider,但这种方式在设计和解耦上有点蹩脚,需要手动对齐collider和子节点的视图, 我之前用过unity,unity父节点添加了刚体,子节点添加collider会随着父节点移动,且能监听到碰撞。
子节点上刚体,类型选Animated
可以试试子节点攻击检测的Collider 勾选下is Trigger
你应该是用的cocos2.x的版本把 2.x没这个问题
确实子节点上刚体,可以监听到碰撞,视觉上也会随着父节点移动。 但主要问题是存在collider会留在原地,和父节点发生碰撞的问题的问题一般常规怎么解决? 要手动帧同步吗?
collider留在原地是因为移动不是通过施加力产生的,而是直接改变坐标造成的吧。这种需要手动调一下同步接口。
并不是,给父节点刚体施加力或者随重力自动下落,子节点的collider都不会随着移动
正常应该不会啊,子节点有加刚体吗?
正常才会把。。我是3.8.7在2.x版本确实不会,我查了下 3.x版本为了兼容3d 底层物理重构了。
子节点加了刚体不设置成Animated的话 视图都会和父节点分离,加Animated的刚体 视图跟随,collider原地不动