我在我目前的游戏中使用复合设计,效果非常好。所有游戏对象都是GameObject的实例,或者是它的直接后代...某些对象实现了特定的界面,例如武器,因此它们可以被其他对象“使用”,或者只是在需要其他共享数据/方法时。但是,我现在开始将box2d集成到游戏中,但在这种情况下我的构图有问题。例如,精灵在精灵渲染组件中渲染,对象属性(如材质)在渲染过程中应用,但在射弹等情况下,
我发现我需要对相同的东西进行两次编码:基础射弹有'onFire','onExpire'等方法,因为武器总是拥有射弹,因此,直接调用这些方法。然而,试图将这些数据与射弹物理组件同步,对我来说似乎是浪费时间。我想在这种情况下,我应该让射弹本身“拥有”物理机构,作为射弹物理组件,它将处理onCollision事件,并更新位置......这对我来说似乎更清晰。现在我当然意识到,在这样做时,我明确地将射弹对象与box2d结合起来,但是对于我的需要,那没关系。
我真的希望对此有一些意见,因为截至目前,我只是在尝试制作与其他物品相同的复合设计时遇到很多问题,这些问题符合我对弹丸的需求。请注意,我并不担心复合最纯粹,我的目标是创建一个游戏,而不是源代码引擎的2D等价物;)
答案 0 :(得分:0)
例如,精灵在精灵渲染组件中渲染,对象属性(如材质)在渲染过程中应用,但在诸如射弹的情况下,
2d是不明智的。在3D中,材质会影响反射和光照,但在2d中它很少出现。
我想在这种情况下,我应该让射弹本身“拥有”物理身体
是的,任何模拟对象都应该有一个附有任何夹具的主体。为你的射弹使用isBullte = true flag。 如果你的游戏逻辑需要在你的射弹上调用一些方法,只需保留参考文献列表,但你不需要合成。