【发布时间】:2013-12-10 10:16:07
【问题描述】:
我在养育身体时遇到了一些问题。当我将多个固定装置附加到主体时,似乎会在内存管理中产生问题。这发生在碰撞期间,因此使用 XCode 我收到以下错误消息:
*** error for object 0xf572ef0: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug
当物体只有一个固定装置时不会发生这种情况。
我想要达到的目标是,例如,如果一个角色拿起一个物品,那么转换就会成为父母的孩子。所以,我们会得到:
Parent_R + Child_R
Parent_P + Child_P
由于我在物理引擎的上下文中,我会假设有一种方法可以在对象之间创建父/子关系。我可以简单地从物理世界中分离对象(比如之前坠落的对象)并将其视为纯精灵游戏对象。这涉及到相当多的来回(例如在放回物理世界时重新创建夹具/主体)。这是我的代码:
void GameObject::AttatchToBody(GameObject& obj1, GameObject& obj2, b2World& world)
{
b2PolygonShape boxShape;
boxShape.SetAsBox(obj2.width, obj2.height);
b2FixtureDef boxFixtureDef;
boxFixtureDef.restitution = 0.2f;
boxFixtureDef.friction = 0.3f;
boxFixtureDef.shape = &boxShape;
boxFixtureDef.density = 1 / (obj2.width + obj2.height);
obj2.fixture = obj1.body->CreateFixture(&boxFixtureDef);
obj2.body = obj1.body;
}
非常感谢任何帮助!
【问题讨论】: