2013-07-23 3 views
0

Вот моя проблема, я новичок в программировании, и я следую учебнику только для того, чтобы научиться случайным вещам. Я получил все, чтобы работать до сих пор, кроме гравитации. Когда я запускаю программу, мой игрок плавает, но когда я нажимаю клавишу «вниз» только тогда, сила тяжести вступает в силу. Я не могу понять, почему.Гравитация работает только после нажатия кнопки 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; 
    } 
} 
+0

Возможно, было бы полезно иметь немного больше контекста. Где вы указываете ответы на разные клавиши? – seaotternerd

+0

Thats почти вся моя программа. Я могу опубликовать все это, просто не знаю, нужно ли мне –

+0

Как был установлен DownBumping? – Pan

ответ

0

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

ySpeed += gravityConstant; 

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

this.addEventListener(Event.ENTER_FRAME, onEnterFrame) 

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

если это происходит быстро, вам нужно будет либо уменьшить постоянную силы тяжести, уменьшить fps, либо использовать ti mer, а не enterframe.

Смежные вопросы