2016-03-18 6 views
1

Игрок прыгает, но не возвращается, и если вы держите клавишу со стрелкой вверх, игрок летает/плавает, как я могу исправить это, чтобы игрок отступил вниз? было бы хорошо, если бы был предоставлен исходный код, но любая помощь велика.Greenfoot: прыжки и возвращение назад не работает

import greenfoot.*; 

public class Character extends Actor 
{ 
double Force = 0; 
double Gravity = 0.5; 
double Boost_Speed = -6; 
int Wait = 0; 

public void act() 
{ 
    setLocation(getX(), (int)(getY() + Force)); 
    if(Greenfoot.isKeyDown("up")){ 
     Wait++; 
     Force = Boost_Speed; 
     if(Wait >= 8) 
     { 
      setLocation(getX(), (int)(getY() + 1)); 
      Wait = 0; 
     } 
    } 
    Force = Force + Gravity; 
} 

}

+0

Из любопытства ... Почему вы вызываете 'setLocation' дважды? – byxor

ответ

0

Я предлагаю решение, вводя флаг isJumped и получить последнюю нажатую клавишу с Greenfoot.getKey() метод:

import greenfoot.*; 

public class Character extends Actor 
{ 
double Force = 0; 
double Gravity = 0.5; 
double Boost_Speed = -6; 
int Wait = 0; 
private String lastKey; 
private Boolean isJumped = false; 
public void act() 
{ 
    setLocation(getX(), (int)(getY() + Force)); 
    lastKey = Greenfoot.getKey(); 
    if(lastKey!=null && lastKey.equals("up") == true && isJumped == true) { 
     isJumped = false; 
    } 
    if(Greenfoot.isKeyDown("up") == true && isJumped == false) { 
     isJumped = true; 
     Wait++; 
     Force = Boost_Speed; 
     if(Wait >= 8) 
     { 
      setLocation(getX(), (int)(getY() + 1)); 
      Wait = 0; 
     } 
    } 
    Force = Force + Gravity; 
} 
} 
Смежные вопросы