Анимация прыжка вперёд или назад
С помощью TranslateTransition попытался сделать элементарное движение влево, вправо, прыжок вверх. Проблема в том, что не знаю как осуществить анимацию прыжка вперёд или назад. Если нажать одновременно UP и RIGHT, разумеется, ничего не будет.
public class Game extends MainMenu {
public AnimationTimer timer;
public TranslateTransition translateTransition;
boolean Repeat = true;
public Rectangle rectangle = new Rectangle(100,718,100,50);
public void Game() {
rectangle.setFill(Color.rgb(10, 10, 10));
GamePane.getChildren().addAll(rectangle);
timer = new AnimationTimer() {
@Override
public void handle(long now) {
GameScene.setOnKeyPressed(event -> {
switch (event.getCode()) {
case UP: case W: {
if (Repeat)
MoveUp();
break;
}
case LEFT: case A: {
MoveLeft();
break;
}
case RIGHT: case D: {
MoveRight();
break;
}
default: break;
}
});
System.out.println("X: " + rectangle.getTranslateX() + " Y: " + rectangle.getTranslateY());
}
};
timer.start();
}
public void MoveUp() { // Jump
Repeat = false;
translateTransition = new TranslateTransition(Duration.seconds(0.3), rectangle);
translateTransition.interpolatorProperty().set(Interpolator.SPLINE(0.1, 0.1, 0.7, 0.7));
translateTransition.setByY(-200);
translateTransition.setAutoReverse(true);
translateTransition.setCycleCount(2);
translateTransition.play();
translateTransition.setOnFinished(event -> {Repeat = true; });
}
public void MoveLeft() { // Left
translateTransition = new TranslateTransition(Duration.millis(20), rectangle);
translateTransition.interpolatorProperty().set(Interpolator.SPLINE(0.1, 0.1, 0.7, 0.7));
translateTransition.setByX(-15);
translateTransition.play();
}
public void MoveRight() { // Right
translateTransition = new TranslateTransition(Duration.millis(20), rectangle);
translateTransition.interpolatorProperty().set(Interpolator.SPLINE(0.1, 0.1, 0.7, 0.7));
translateTransition.setByX(15);
translateTransition.play();
}
}