Избягвайте импулсно натрупване на спрайт при докосване

Правя първата си игра за iOS с помощта на SpriteKit и прилагам импулс за моя спрайт всеки път, когато докосна екрана, нещо подобно:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    _ball.physicsBody.velocity = CGVectorMake(0, 0);
    [_ball.physicsBody applyImpulse:CGVectorMake(0, 5)];
}

Опитвам се да избегна натрупването на импулси, настройвайки скоростта на спрайта на нула, преди да приложа импулса, но изглежда не работи. Също така мислех да импулсирам условно спрайта, като го правя само когато скоростта му е нула, но нито едно от двете не работи. Какво правя погрешно?


person thxou    schedule 20.03.2014    source източник


Отговори (1)


можете да опитате:

 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
 {

    CGVector vecVelocity = _ball.physicsBody.velocity;

    if(vecVelocity.dx == 0 && vecVelocity.sx == 0) {

        [_ball.physicsBody applyImpulse:CGVectorMake(0, 5)];
    }

}
person Ilario    schedule 21.03.2014
comment
Да, това беше отговорът. В момента работя с акселерометъра, така че просто трябваше да сравня dy компонента на скоростта. Благодаря ти много. - person thxou; 23.03.2014