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

Я делаю свою первую игру для 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