google了很久,也查了很多资料,现在功能是可以实现,但是感觉效率低而且实现的方式不太好
人物为骨骼动画创建的Armature,已在studio添加了碰撞块,在工程运行时可以获取ColliderDetector并自行计算是否碰撞。
我这里的需求是有一些物理效果,类似PhysicsBody间的弹性碰撞并且无法穿透的效果,而且人物移动的话使用冲量也比按力矩计算加速度要方便的多。
一开始游戏是使用iOS自身的SpriteKit做的,使用帧动画,物理处理的方式是主题PhysicsBody加动作时joint透明动作Node的Body,使之看上去像是一个可以碰撞的整体,并且由于绑定的PhysicsBody的Category设置不同还可以直接响应并判断出如身体受到攻击和武器击中敌人等。
迁移cocos2d-x 时一开始是直接搬的,后来看到studio可以使用骨骼动画这个不错,于是使用了cocosStudio::Armature加载骨骼动画作为人物Node,现在问题来了,我是把动画Node与PhysicsBody那块重新实现下呢,还是说直接使用Armature自己的ColliderDetector?网上并未找到Armature绑定PhysicsBody的相关说明,倒是一堆在update函数中使用区块判定的。如果使用区块判定的话,物理碰撞反应都需要自己去实现,这用不用物理引擎就没什么意义了吧?
有没有人尝试过怎样获取每块骨骼的node?我获取好像都是在主Armture上?如果可以获取分体Node并且分体Node是由动画控制位置,是否就可以直接在单块骨骼上添加碰撞块并使用joint绑定关系来处理物理碰撞了?
如果我使用ColliderDetector是否有解决方案可以实现物理碰撞?因为在studio里面都绑定了骨骼从属关系,如果可以设置物理属性(质量,弹性,joint方式等)应该是可以解决的吧?