无法在iPhone的Box2D中设置“ setAsEdge”

问题描述 投票:0回答:1

此代码将在iPhone屏幕周围创建线条,但最底行应位于中间(我需要更改.y,但我不知道如何)。怎么做?

有人可以向我解释这些“ setAsEdge”方法吗?

// Define the ground body.
b2BodyDef groundBodyDef;
groundBodyDef.position.Set(0,0); // bottom-left corner

// Call the body factory which allocates memory for the ground body
// from a pool and creates the ground box shape (also from a pool).
// The body is also added to the world.
b2Body* groundBody = world->CreateBody(&groundBodyDef);

// Define the ground box shape.
b2PolygonShape groundBox;       

// bottom
groundBox.SetAsEdge(b2Vec2(0,0), b2Vec2(screenSize.width/PTM_RATIO,0));
groundBody->CreateFixture(&groundBox,0);

// top
groundBox.SetAsEdge(b2Vec2(0,screenSize.height/PTM_RATIO), b2Vec2(screenSize.width/PTM_RATIO,screenSize.height/PTM_RATIO));
groundBody->CreateFixture(&groundBox,0);

// left
groundBox.SetAsEdge(b2Vec2(0,screenSize.height/PTM_RATIO), b2Vec2(0,0));
groundBody->CreateFixture(&groundBox,0);

// right
groundBox.SetAsEdge(b2Vec2(screenSize.width/PTM_RATIO,screenSize.height/PTM_RATIO), b2Vec2(screenSize.width/PTM_RATIO,0));
groundBody->CreateFixture(&groundBox,0);
iphone cocos2d-iphone box2d
1个回答
1
投票
// bottom

float screenMid = screenSize.height/2;  // Y axis on screen middle

        groundBox.SetAsEdge(b2Vec2(0,screenMid/PTM_RATIO),b2Vec2(screenSize.width/PTM_RATIO,screenMid/PTM_RATIO));

这会将您的底线移到屏幕中间。SetAsEdge方法获取两个点,并从点1到点2绘制一条线。在上面的语句中,第一点是“ b2Vec2(0,screenMid / PTM_RATIO)”。其中0是x轴,而screenMid是第一个点的y轴。第二点也一样。

您必须将每个点除以PTM_RATIO才能将其转换为box2d坐标。

© www.soinside.com 2019 - 2024. All rights reserved.