如何在不属于世界的情况下创建 body

How to create body without it being part of the world

开发一款及时从顶部添加球的游戏。有没有办法创建一个 body 并将其放入 queue 以便稍后添加?

这也是池化所必需的。当 body 从游戏中移除时,它会被放入池中,当需要类似的 body 时,它会从池中取出。

您不能在 b2World 之外创建 body,正如 Box2D documentation:

中明确指出的那样

You should never use new or malloc to create a body. The world won't know about the body and the body won't be properly initialized.

也就是说你只能用方法b2World::CreateBody()创建一个body,它会自动将创建的body添加到世界。

但是,您可以创建 b2BodyDef 池而不是 b2Body,因为它们完全独立于主体:

Box2D copies the data out of the body definition; it does not keep a pointer to the body definition.

并且您可以使用 userData 指针 link 具有相应 body 定义的 body。