所以我有一个方法可以让一个物体迅速向上移动。里面的代码是:
b2Vec2 force;
force.Set(_body->GetLinearVelocity().x, _body->GetLinearVelocity().y+1.0f);
for (b2Body* b = _game.world->GetBodyList(); b; b = b->GetNext())
{
if (b->GetUserData() == character)
{
b->SetLinearVelocity(force);
}
}
代码并不重要,我想知道如何在几秒钟后或一旦达到某个y
点时停止此过程。因为atm它用完了屏幕!
问候。
答案 0 :(得分:0)
只测试身体的y位置是否低于您不希望它穿过的阈值:
for (b2Body* b = _game.world->GetBodyList(); b; b = b->GetNext())
{
if (b->GetUserData() == character && b->GetPosition().y < 300)
{
b->SetLinearVelocity(force);
}
}
答案 1 :(得分:0)
你可以做的是创建一个nstimer,用于定期调用包含代码的选择器并将其置于重复模式。 这将永远持续..所以为了在一段特定的时间之后停止它,将整个事物放在一个新的方法中并在新的nstimer中调用该方法。
所以基本上是计时器内的计时器。