2010-08-11 95 views
0

我有一个设计问题,这可能是由于这样的事实,我不完全理解的cocos2d和Box2D的呢。游戏对象设置在cocos2d + Box2D的

我想创建具有CCSprite(图像数据)和b2Body(物理)的游戏对象,我会是正确的,使一个同时包含封装对象?如果我这样做,这将让我作出更改CCSprite

OR

正如我在示例代码的b2Body具有精灵被设置为用户数据变量都看到了。然后用这个方法,我只需要一个指向物理对象的单个指针来处理CCSprite。

Thx提前。

回答

1

我最喜欢的做法是将两者封装在一个Actor对象中。我的Actor对象还负责根据b2Body数据更新CCSprite位置/旋转。然后我使用该Actor对象作为b2Body中的userData。将Actor作为userData在迭代联系侦听器中的实体时非常有用。

+0

这似乎是一个更好的解决方案,因为我需要以其他方式对我的Actor使用物理对象。 – kohlerfc 2010-08-27 11:08:20

1

一个简单的解决方案是将body的userData成员设置为指向精灵,而精灵的userData成员指向body。通过这种方式,您可以通过简单方便的方式访问它们。那么你不应该将精灵和主体对象封装在一个actor中。