动画编辑器碰撞区数据读取,使用有bug?管理员看到回复下

cocostudio的碰撞编辑区编辑出来的形状读取到程序中有各种问题,
1:比如会造成混乱,
body1:category = 1,
body2:category = 2,
body3:category = 4,
但是碰撞检测时,得到定制器1的fixture会是定制器2的数据;但是body确实对的,这个是我测试出来的,如果用自己手写的fixture是不会有这个问题的。
body1是不会跟body2发生碰撞,但是却会发生。

b2Fixture* fixtureA = contact->GetFixtureA();
b2Fixture* fixtureB = contact->GetFixtureB();
b2Body *bodyA = (b2Body *)fixtureA->GetBody();
b2Body *bodyB = (b2Body *)fixtureB->GetBody();

如上四句代码,假设body1与body3发生碰撞,
假设:fixtureA是body1的,fixtureB是body3的
但是真实得到的确实:fixtureA为body1,fixtureB为body2,下面得到的bodyA与bodyB确是正确的body,这让我无法理解。

2:如果频繁的使用一个动画,并且加载这个动画的碰撞信息,但是这个碰撞信息会没有读取,就没有创建出fixture。

如:使用动画编辑器编辑了一个动画,发射类武器,在武器上编辑了box2d碰撞框。
在程序中重复使用这个动画来实现hero扔武器,每次扔出一个武器就create一次动画,但是有时候使用setBody没有得到fixture

上面都是我有测试过的。或许是我代码有问题,或许是引擎代码有问题,管理员有看到请回答下我的问题,当然不是管理员有哪个大神知道也请回答下,谢谢!!

我刚开始学cocos2dx,不是大神。不过也发表下个人想法吧。

  1. 碰撞是相互的,可以是我碰你,也可以是你碰我,所以你说的"混乱"是由于碰撞发起者不一样造成的,你想区别是哪个body,你可以通过setTag来区别一下。
  2. 仅仅通过描述无法知晓问题所在,还得请有空的大神验证。
  1. 再次返回阅读代码,发现自己理解错误。如果是碰撞体已经确定得到的数据不一样,那得再次确定fixture是否有设置混乱的。

这个我是经过我很多次的测试得到的,在游戏时也很明显的发生了碰撞,
比如说在游戏里有一个按钮,这个按钮只会跟主角发生碰撞,怪物不跟其发生碰撞,怪物会跟主角发生碰撞,
怪物经过按钮时会检测到碰撞,我调试时,这个按钮的fixture变成了主角的fixture了,但是body确实正常的,得到的userdata也是按钮的,

可以的话给个测试例吧

:10:我的代码都被我改掉了,没有原来的代码了,我有截图,发给你看看吧,有空我把那个有问题的代码还原了,再发给你

http://www.cocoachina.com/ask/questions/show/106373
这个是我在问答区发的问题,有截图