gpt4 book ai didi

ios - 带有自定义多边形的box2d崩溃

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

我创建了一个具有5个顶点的多边形,所有顶点均由VertexHelper生成。

为什么程序在b2PolygonShape.cpp中的 ComputeCentroid()中的 b2Assert(区域> b2_epsilon)中获得SIGABRT?

当我使用 shape.SetAsBox(.359375,1.0)而不是 shape.Set(顶点,计数)时,程序运行良好。

使用shape.Set()时,在计算质心时似乎出了点问题,但是我不知道该如何处理。

这是代码:

b2BodyDef bodyDef;
bodyDef.type = b2_dynamicBody;
bodyDef.awake = NO;
bodyDef.position.Set(3.125, 3.125);
bodyDef.angle = -.785398163397;
spriteBody = world->CreateBody(&bodyDef);
spriteBody->SetUserData(sprite);
b2MassData massData = {2.0, b2Vec2(0.021875, 0.203125), 0.0};
spriteBody->SetMassData(&massData);
int32 count = 5;
b2Vec2 vertices[] = {
b2Vec2(-11.5f / PTM_RATIO, -16.0f / PTM_RATIO),
b2Vec2(-10.5f / PTM_RATIO, 15.0f / PTM_RATIO),
b2Vec2(10.5f / PTM_RATIO, 15.0f / PTM_RATIO),
b2Vec2(10.5f / PTM_RATIO, -5.0f / PTM_RATIO),
b2Vec2(-5.5f / PTM_RATIO, -16.0f / PTM_RATIO)
};
b2PolygonShape shape;
shape.Set(vertices, count);
b2FixtureDef fixtureDef;
fixtureDef.shape = &shape;
fixtureDef.density = 1.0f;
fixtureDef.friction = 0.2f;
fixtureDef.restitution = 0.7f;
spriteBody->CreateFixture(&fixtureDef);

最佳答案

看来您以错误的方式缠绕了顶点。我认为它们至少应在box2d中逆时针旋转。

您的断言将失败,因为面积计算将返回负值,远小于b2_epsilon

关于ios - 带有自定义多边形的box2d崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7546117/

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