0
我正在玩CocosSharp中的box2d。我確實有一個問題 - 物體移動速度太慢!儘管有很大的價值...儘管箱子裏有巨大的重力,但運動速度太慢
// Physics
public const float GRAVITY = -99999999999999999999999999999f;
public const int PTM = 32;
public const float ROCKET_MASS = 10000f;
public const float TIMESTEP = 1f/240f;
請注意,我已更改時間步。我曾嘗試過使用質量,但它讓人感到絕望!
// Add rocket's physics
var def = new b2BodyDef();
def.allowSleep = true;
def.position = new b2Vec2(0.0f, 0.0f);
def.type = b2BodyType.b2_dynamicBody;
body = world.CreateBody (def);
// body.Mass = Globals.ROCKET_MASS;
body.SetActive(true);
b2PolygonShape bodyBox = new b2PolygonShape();
bodyBox.SetAsBox(0.1f , 0.5f); // !
b2FixtureDef bodyFixture = new b2FixtureDef();
bodyFixture.shape = bodyBox;
bodyFixture.density = 0.5f;
bodyFixture.friction = 0.4f;
body.CreateFixture(bodyFixture);
這是我如何初始化物理:
void InitPhysics()
{
// Init the world
var gravity = new b2Vec2 (0.0f, Globals.GRAVITY);
world = new b2World (gravity);
world.SetAllowSleeping (true);
world.SetContinuousPhysics (true);
// Now init the ground
new Ground(world);
}
這是我的渲染代碼:
private void StartScheduling()
{
Schedule(t =>
{
if(t <= Globals.TIMESTEP)
timeAccumulator += t;
else
timeAccumulator += Globals.TIMESTEP;
while (timeAccumulator >= Globals.TIMESTEP)
{
world.Step(Globals.TIMESTEP, 6, 2);
timeAccumulator -= Globals.TIMESTEP;
// If touched, then do apply force
if (touch)
{
rocket.body.ApplyLinearImpulse(new b2Vec2(0f, 10000f), b2Vec2.Zero);
}
world.DrawDebugData();
rocket.UpdateRocketPosition();
}
world.ClearForces();
});
}
我太累了吧,請大家幫忙!火箭必須快速落下,但它不會!
http://www.iforce2d.net/b2dtut/gotchas#speedlimit – iforce2d
@ iforce2d我如何能降低物體在Box2D的全球規模,但保存它的可見大小(我有480×800屏幕)? –
對於PTM – iforce2d