gpt4 book ai didi

ios - 圆形体定位在 box2d(cocos2dx) 中不起作用

转载 作者:行者123 更新时间:2023-11-29 02:42:20 26 4
gpt4 key购买 nike

我正在开发 cocos2dX 游戏。我使用 box2d 进行物理模拟。我正在尝试添加一个圆形主体和一个矩形主体。这是我的代码

// Create circular sprite and body
CCSprite* ball_sprite = CCSprite::create("ball.png");
this->addChild(ball_sprite);

b2BodyDef ballBodyDef;
ballBodyDef.type = b2_dynamicBody;
ballBodyDef.position.Set(screenSize.width/PTM_RATIO, screenSize.height/2/PTM_RATIO);//im running it in an iphone retina and screensize is 640x960
ballBodyDef.userData = ball_sprite;
ball_body = _world->CreateBody(&ballBodyDef);

b2CircleShape ballshape;
ballshape.m_radius = BALL_SIZE/2;

b2FixtureDef ballShapeDef;
ballShapeDef.shape = &ballshape;
ballShapeDef.density = 100.0f;
ballShapeDef.friction = 0.5f;
ballShapeDef.restitution = 0.7f;
ball_body->CreateFixture(&ballShapeDef);

// Create rectangular sprite and body
CCSprite* block_sprite = CCSprite::create("HelloWorld.png");
this->addChild(block_sprite);

b2BodyDef blockBodyDef;
blockBodyDef.type = b2_staticBody;
blockBodyDef.position.Set(0, screenSize.height/2/PTM_RATIO);
blockBodyDef.userData = block_sprite;
block_bodie = _world->CreateBody(&blockBodyDef);

b2PolygonShape blockshape;
blockshape.SetAsBox(B_WIDTH/PTM_RATIO,B_HEIGHT/PTM_RATIO);
b2FixtureDef blockShapeDef;
blockShapeDef.shape = &blockshape;
blockShapeDef.density = 100.0f;
blockShapeDef.friction = 0.5f;
blockShapeDef.restitution = 0.7f;
block_bodie->CreateFixture(&blockShapeDef);

矩形体按预期显示在屏幕上。

但是圆体没有显示在屏幕上。

当我在update函数中打印圆体的位置时,位置是2000左右的大数字。而且每次运行程序时这个位置都不一样。

如果未添加矩形体(注释行 block_bodie->CreateFixture(&blockShapeDef);),则圆形体会按我的预期显示在屏幕上。

我做错了什么?

提前致谢。

最佳答案

这两个物体在创建时是否重叠?圆很可能只是被矩形推开,因为矩形是静态的而圆是动态的。如果您尝试同时创建它们,但不调用 world Step 函数来运行物理模拟,您可能会在屏幕上看到它们。

您可以创建它们以使它们不重叠,或者至少不重叠太多,或者将其中一个设为传感器,或者设置它们的碰撞类别和掩码位以使它们不相互作用。

当然,我假设您正在查看调试绘图显示,这是真正了解物理引擎正在做什么的唯一方法。

关于ios - 圆形体定位在 box2d(cocos2dx) 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25604000/

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