gpt4 book ai didi

Box2D 得到我 body 的形状

转载 作者:行者123 更新时间:2023-12-02 15:41:09 24 4
gpt4 key购买 nike

        Body b;
while ((b=box2d.physics.PhysicssWorld.world.getBodyList().getNext())!=null) {

Shape shape;
while ((shape=b.getShapeList().getNext())!=null) {

Log.e("name",""+b.getUserData().toString()+" "+shape+" ");

opengl.saveMatrix();
Meshes.select(b.getUserData().toString())
.translate((b.getPosition().x)*RATIO, (b.getPosition().y)*RATIO)
.rotate((int) ((int) b.getAngle()* (180 / Math.PI)), 0, 0, 1)
.draw(shape, 1,1,1);

opengl.loadMatrix();

}


}

我想得到我 body 的形状,但我什么也得不到,只有 null.. 为什么?

永远不要运行这一行:Log.e("name",""+b.getUserData().toString()+""+shape+"");

所以 shape=b.getShapeList().getNext()) 总是空的...

最佳答案

我自己刚开始使用 Box2D。就我对图书馆的了解而言,获取 body 形状的主要方法是通过固定装置。从夹具中你得到一个 b2Shape 指针 - 但是,因为它的方法是虚拟的,你可能需要将它转换为 b2PolygonShape/b2CircleShape 指针才能使用。下面是一些代码:

void DoStuffWithShapes(b2World *World)
{
b2Body * B = World->GetBodyList();
while(B != NULL)
{
b2Fixture* F = B->GetFixtureList();
while(F != NULL)
{
switch (F->GetType())
{
case b2Shape::e_circle:
{
b2CircleShape* circle = (b2CircleShape*) F->GetShape();
/* Do stuff with a circle shape */
}
break;

case b2Shape::e_polygon:
{
b2PolygonShape* poly = (b2PolygonShape*) F->GetShape();
/* Do stuff with a polygon shape */
}
break;
}
F = F->GetNext();
}

B = B->GetNext();
}
}

其他一些注意事项:b2Body 的.getNext() 函数返回一个指针——这是一个链表的实现。 b2Fixture::GetNext() 也是如此。您的代码中有一些(对我而言)不熟悉的内容,所以我不能肯定地说,但如果您简单地检查一下并确保您的变量与 Box2D 函数的返回类型匹配,它可能会正常工作。

关于Box2D 得到我 body 的形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5873309/

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