Гравитация работает только после нажатия клавиши AS3

Вот моя проблема, я новичок в программировании, и я следую учебному пособию, чтобы узнать случайные вещи. До сих пор я получил все, чтобы работать, кроме гравитации. Когда я запускаю программу, мой игрок плывет, но когда я нажимаю только клавишу "вниз", гравитация начинает действовать... Я не могу понять, почему.

if(leftBumping){
    if(xSpeed < 0){
        xSpeed *= -0.5;
    }
}

if(rightBumping){
    if(xSpeed > 0){
        xSpeed *= -0.5;
    }
}

if(upBumping){
    if(ySpeed < 0){
        ySpeed *= -0.5;
    }
}

if(downBumping){
    if(ySpeed > 0){
        ySpeed *= 0.0;
    }




} 
else {
        ySpeed += gravityConstant;
}

У меня есть след на столкновениях, и они все работают правильно. Если я нахожусь в открытом космосе, он не обнаруживает столкновения, и при касании стен вывод показывает, что я есть. Я перерабатывал эти строки часами. Пожалуйста помоги

это может также помочь

if(aPressed){
    xSpeed -= speedConstant;

} else if (dPressed){
    xSpeed += speedConstant;

}

if (wPressed){
    ySpeed -= speedConstant;

} else if(sPressed){
    ySpeed += speedConstant;
}
if(leftBumping){
    if(xSpeed < 0){
        xSpeed *= -0.5;
    }
}

1 ответ

Вы должны придерживаться этого бита:

ySpeed += gravityConstant;

в функцию, которая вызывается каждый кадр, как это:

this.addEventListener(Event.ENTER_FRAME, onEnterFrame)

private function onEnterFrame(e:Event):void
{
    ySpeed += gravityConstant;
}

если это происходит быстро, вам нужно будет либо уменьшить свою гравитационную постоянную, либо уменьшить частоту кадров, либо использовать таймер, а не энтерфрейм.

Другие вопросы по тегам