运行方法一段时间

时间:2011-11-30 07:56:10

标签: objective-c ios cocos2d-iphone box2d

所以我有一个方法可以让一个物体迅速向上移动。里面的代码是:

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它用完了屏幕!

问候。

2 个答案:

答案 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中调用该方法。

所以基本上是计时器内的计时器。