如何在 Box2d 中制作斜率图像(b2body)?
Posted
技术标签:
【中文标题】如何在 Box2d 中制作斜率图像(b2body)?【英文标题】:How to make askew slope image(b2body) in Box2d? 【发布时间】:2013-05-09 10:09:38 【问题描述】:我是 Box2d 的新手,正在学习自己。 我正在向here学习Box2d
我想制作一个身体并想给 b2body 一个角度,这样它看起来就像身体像斜线一样站立,像斜坡一样。
这是我的代码。
for(int i = 0; i < 4; i++)
static int padding=20;
// Create block and add it to the layer
CCSprite *block = [CCSprite spriteWithFile:@"slope.png"];
int xOffset = padding+block.contentSize.width/2+ ((block.contentSize.width+padding)*i);
block.position = ccp(xOffset, 250);
block.tag = 2;
[self addChild:block];
// Create block body
b2BodyDef blockBodyDef;
blockBodyDef.type = b2_staticBody; //b2_dynamicBody
blockBodyDef.position.Set(xOffset/PTM_RATIO, 250/PTM_RATIO);
blockBodyDef.userData = block;
b2Body *blockBody = _world->CreateBody(&blockBodyDef);
// Create block shape
b2PolygonShape blockShape;
blockShape.SetAsBox(block.contentSize.width/PTM_RATIO/2,
block.contentSize.height/PTM_RATIO/2);
// Create shape definition and add to body
b2FixtureDef blockShapeDef;
blockShapeDef.shape = &blockShape;
blockShapeDef.density = 10.0;
blockShapeDef.friction = 0.0;
blockShapeDef.restitution = 0.1f;
blockBody->CreateFixture(&blockShapeDef);
在这段代码中,我水平地制作了 4 个 b2body。现在我希望这些垂直且略微倾斜,就像一个斜坡。
我还不能这样做。
我不知道我必须给身体或其他东西天使。找不到 Box2d 的示例代码和好的教程。
是否有任何网站可供我为初学者找到一些 xcode Box2d 演示? 或者像我们有 UIButtons、UILabel、UITextfiled 的应用程序之类的代码,我能找到这样的 Box2d 代码吗?
在这个演示中,我尝试制作 4 个静态斜坡图像,并且我必须从左上角推球(b2dynamicbody)。球会穿过这4个静止的物体,球会根据坡度转动。
非常欢迎任何想法或建议。
【问题讨论】:
你不能用简单的线条作为png并设置你的盒子的角度吗? 先生,我对 Box2d 没有任何经验。这是我的第一个演示。 你试过设置 blockBodyDef.angle 吗? 嗯...比如blockBodyDef.angle = 1; 【参考方案1】:在您的示例中替换此代码并获得一个草率的主体
// Create block body
b2BodyDef blockBodyDef;
blockBodyDef.type = b2_staticBody; //b2_dynamicBody
blockBodyDef.position.Set(200/PTM_RATIO, 250/PTM_RATIO);
blockBodyDef.userData = block;
b2Body *blockBody = _world->CreateBody(&blockBodyDef);
// Create block shape
b2PolygonShape blockShape;
int num = 3;
b2Vec2 verts[] =
b2Vec2(-27.5f / PTM_RATIO, -296.6f / PTM_RATIO),
b2Vec2(-14.3f / PTM_RATIO, -127.2f / PTM_RATIO),
b2Vec2(-281.0f / PTM_RATIO, -288.4f / PTM_RATIO)
;
blockShape.Set(verts, num);
// Create shape definition and add to body
b2FixtureDef blockShapeDef;
blockShapeDef.shape = &blockShape;
blockShapeDef.density = 10.0;
blockShapeDef.friction = 0.0;
blockShapeDef.restitution = 0.1f;
blockBody->CreateFixture(&blockShapeDef);
祝你好运,请随时提出您的问题。
【讨论】:
什么是块先生? blockBodyDef.userData = 块;使用未声明的标识符时出错。 它的精灵对象,如果你不想在正文中添加精灵,只需注释该行 非常感谢,先生 还有一件事,我知道如何创建主体,但我不知道如何为主体着色,例如 imgView.backgroundcolor = [uicolor redcolor]; ,如果我们不想在imageview上使用.png图像,像这样如何创建只有颜色的body不想使用.png图像,用于测试目的? 你不能给身体颜色,它在box2d中不支持,你必须使用只有图像的精灵选项。 谢谢先生,任何关于 box2d 的好书或网站,我可以在那里学习并获取示例代码或一些演示项目。我完全是初学者,直到现在对我来说似乎很难。因为我在互联网上搜索并且无法找到我的查询,除非我在这里提问并得到专家的回答。以上是关于如何在 Box2d 中制作斜率图像(b2body)?的主要内容,如果未能解决你的问题,请参考以下文章
如何正确删除版本:Box2dWeb-2.1.a.3、Box2D_v2.3.1r3 中的 box2d 主体? Box2D 错误?
如何正确使用Cmake中的标题路径在我的项目中构建Box2D