Я делаю 2D-игру с JavaFX.Есть фон, который устанавливается как игровая сцена.
Как добавить изображение, которое будет действовать как «танк», которым может управлять игрок, чтобы перемещать и стрелять, который будет наслоен поверх сцены (с фоном)?
Стоит отметить, что у танка будут параметры топора, y и вращения.Тогда столкновения будут применены к танку, в котором он также может стрелять пулями.
Это работает в Eclipse IDE и JavaFX.Я попытался добавить другой метод к своему ViewManager
и вызвать метод из конструктора ViewManager
.Я также добавил сцену в Main.java
, чтобы можно было показать обе сцены.
Это из Main.java
import javafx.application.Application; //import JavaFX libraries
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.scene.shape.Rectangle;
import javafx.scene.Group;
import javafx.scene.Parent;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage)
{
try
{
ViewManager manager = new ViewManager();
primaryStage = manager.getMainStage();
primaryStage.setScene(manager.drawImageOnScreen(50, 50, 0, "image path"));
primaryStage.show();
}
catch(Exception e)
{
e.printStackTrace();
}//end catch
}//end start
public static void main(String[] args)
{
launch(args);
}//end main
}//end class
Это мой ViewManager.java
, который пытается добавить изображение поверх сцены.
/* I've discarded the imported libraries and packages*/
public class ViewManager {
private static final int HEIGHT = 1000;
private static final int WIDTH = 1366;
private AnchorPane mainPane;
private Scene mainScene;
private Stage mainStage;
private final static int GAME_BUTTON_START_X = 100;
private final static int GAME_BUTTON_START_Y = 150;
List<WarstrikeButton> gameButtons;
public ViewManager()
{
//Initialize the game stage
initializeStage();
//Initialize the game buttons
gameButtons = new ArrayList<>();
createButtons();
//Create background
createBackground();
}//end viewManager
private void initializeStage() {
mainPane = new AnchorPane();
mainScene = new Scene(mainPane, WIDTH, HEIGHT);
mainStage = new Stage();
mainStage.setScene(mainScene);
}
public Stage getMainStage()
{
return mainStage;
}
private void addGameButton(WarstrikeButton button)
{
button.setLayoutX(GAME_BUTTON_START_X);
button.setLayoutY(GAME_BUTTON_START_Y + gameButtons.size() * 100);
gameButtons.add(button);
mainPane.getChildren().add(button);
}
private void createButtons()
{
createMoveButton();
createShootButton();
}//end createButtons method
private void createMoveButton()
{
WarstrikeButton moveButton = new WarstrikeButton("Move");
addGameButton(moveButton);
}
private void createShootButton()
{
WarstrikeButton shootButton = new WarstrikeButton("Shoot");
addGameButton(shootButton);
}
private void createBackground()
{
Image backgroundImage = new Image("src/com/warstrike/graphics/resources/2d-game-background-6.jpg", 1366, 1000, false, true);
BackgroundImage background = new BackgroundImage(backgroundImage, BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, BackgroundPosition.DEFAULT, null);
mainPane.setBackground(new Background(background));
}//end createBackground function
//end class
public Scene drawImageOnScreen(double x, double y, double rotation, String imagePath) throws FileNotFoundException
{
//Creating an image
Image image1 = new Image(new FileInputStream(imagePath));
//Setting the image view
ImageView imageView = new ImageView(image1);
//Setting the position of the image
imageView.setX(x);
imageView.setY(y);
imageView.setRotate(rotation);
//setting the fit height and width of the image view
imageView.setFitHeight(x);
imageView.setFitWidth(y);
//Setting the preserve ratio of the image view
imageView.setPreserveRatio(true);
Group root = new Group(imageView);
//Creating a scene object
Scene scene = new Scene(root, 600, 500);
return scene;
}//end drawImageOnScreen function
}
Я не уверен, как мне поступить.Спасибо за вашу помощь.