2011-09-17 19 views
3

我使用的是复合材料的设计在我目前的游戏,效果很好。所有的游戏对象是游戏对象的实例或是它的直接后裔......一些对象实现一个特定的接口,如武器,让他们可以“拿来主义”被其他物体或简单地时,他们需要额外的共享数据/方法。不过,我现在正在开始将box2d整合到游戏中,但在这种情况下,我遇到了组合问题。例如,精灵在精灵渲染组件和对象属性(如材质)中呈现,在渲染过程中得到应用,但在诸如抛射物的情况下,我发现我需要实质上编码两次相同的东西:基础射弹有'onFire','onExpire'等方法,因为武器总是拥有射弹,因此直接调用这些方法。但是,试图将这些数据与弹丸物理组件同步,看起来像是在浪费时间。我认为,在这种情况下,我应该有可能使弹丸自己“拥有”物理体,其中作为弹丸物理组件,将处理onCollision事件,以及更新的位置..这将只是似乎清洁剂给我。现在我当然意识到,在这样做的时候,我明确地将弹丸对象与box2d耦合起来,但是为了我的需要,这样可以。组成及子弹

我真的想在此方面的投入,因为截至目前,我只是有很多的努力使其他对象使用相同的复合材料设计问题,适合我的需要与弹丸。请注意,我并不担心是一个复合最纯粹的,我的目标是创建一个游戏,而不是源引擎的二维等价物;)

回答

0

例如,一个精灵在精灵渲染组件中呈现并且物体属性(如材质)在渲染过程中得到应用,但在诸如投射物的情况下,

对于2d来说这是非常不明智的。在3D材质中会影响反射和光照,但在2D中,这种情况很少见。

我认为在这种情况下,我应该有可能使弹丸自己“拥有”物理体

是的,任何模拟对象应该有一个机构附带任何夹具。使用isBullte =真正的标志为您的投射物。 如果你的游戏逻辑需要调用你的弹丸一些方法,只是一味地引用列表,但你并不需要为组成。

+0

我最终使弹丸自己的身体,你said..but我用组成原因,主要是让所有的对象可以通过相同的管道,而无需做类型转换处处传递......这也是为什么我使用子系统,以便对象的组件可以通过专门处理每种类型的系统进行注册和更新。 – Xealgo