gpt4 book ai didi

box2d - 组成和射弹

转载 作者:行者123 更新时间:2023-12-05 00:01:05 26 4
gpt4 key购买 nike

我在当前游戏中使用的是复合设计,效果很好。所有游戏对象要么是 GameObject 的实例,要么是它的直接后代......一些对象实现了特定的接口(interface),例如武器,因此它们可以被其他对象“使用”,或者只是在它们需要额外的共享数据/方法时使用。然而,我现在开始将 box2d 集成到游戏中,但在这种情况下我遇到了合成问题。例如, Sprite 在 Sprite 渲染组件中渲染, Material 等对象属性在渲染期间应用,但在弹丸等情况下,

我发现我基本上需要对相同的东西进行两次编码:基本射弹具有“onFire”、“onExpire”等方法,因为武器始终拥有射弹,因此,直接调用这些方法。但是,尝试将该数据与射弹物理组件同步,对我来说似乎是在浪费时间。我认为在这种情况下,我可能应该让射弹本身“拥有”物理体,作为射弹物理组件,它将处理 onCollision 事件,并更新位置……这对我来说似乎更清晰。现在我当然意识到,在这样做时,我明确地将射弹对象与 box2d 耦合,但对于我的需要来说,这很好。

我真的很想就此提出一些意见,因为截至目前,我在尝试制作其他对象使用的相同复合设计时遇到了很多问题,以满足我对射弹的需求。请注意,我并不担心成为最纯粹的复合 Material ,我的目标是创建游戏,而不是源引擎的 2D 等价物;)

最佳答案

For example, a sprite gets rendered in the sprite render component and the objects properties such as material, get applied during rendering, but in cases such as projectiles,

这对于 2d 来说是不典型的。在 3d 中 Material 会影响反射和照明,但在 2d 中这种情况很少见。

I think in this case, I should possibly make the projectiles themselves "own" the physics body

是的,任何模拟对象都应该有一个附有任何固定装置的主体。为你的射弹使用 isBullte = true 标志。如果您的游戏逻辑需要在射弹上调用某些方法,只需保留引用列表,但您不需要为此进行组合。

关于box2d - 组成和射弹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7451608/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com