Game Development Asked on January 3, 2022
I am trying to make an ImageView
change its position based on the direction it is facing.
import javafx.animation.AnimationTimer;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.stage.Stage;
public class Demo extends Application {
public void start(Stage window) {
window.setTitle("Changing ImageView position based on angle of rotation");
int speed = 10; // You can modify the speed here
ImageView imageView = new ImageView(new Image("https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcTBJoRKh1UKimWTSLdabW2b8RSLDeSgMfSqqg&usqp=CAU"));
imageView.setX(100);
imageView.setY(100);
imageView.setRotate(65); // This is where you can change the angle of rotation
Group root = new Group();
root.getChildren().add(imageView);
Scene scene = new Scene(root);
window.setScene(scene);
final long[] lastNanoTime = {System.nanoTime()};
new AnimationTimer() {
@Override
public void handle(long currentTime) {
double elapsedTime = (currentTime - lastNanoTime[0]) / 1000000000.0;
lastNanoTime[0] = currentTime;
imageView.setX(imageView.getX() + Math.sin(Math.toRadians(imageView.getRotate())) * speed * elapsedTime);
imageView.setY(imageView.getY() + Math.cos(Math.toRadians(imageView.getRotate())) * speed * elapsedTime);
}
}.start();
window.show();
}
public static void main(String[] args) {
launch(args);
}
}
The above code is based on the code I am using. You can adjust the degrees accordingly to see the issue. The ImageView
does not move in the direction it is facing. Note: I found a random .png file online for the purpose of this demo. You can substitute with a different image in you own code in order to better visualize the problem.
The issue is, the ImageView
does not move in the direction it is facing. When oriented vertically (0° or 180°) the ImageView
moves backward, but when oriented horizontally (90° or 270°) it moves straight ahead like it should. When oriented diagonally, it moves somewhere in between.
What am I doing wrong and how do I fix it?
The question was resolved on Stack Overflow. The y axis is inverted in JavaFX, so I need to use -cos(θ) instead.
Answered by qwerty on January 3, 2022
0 Asked on January 23, 2021 by shunkashuu
1 Asked on January 17, 2021 by shamen-raze
1 Asked on January 15, 2021 by hesitatetowonder
0 Asked on January 14, 2021 by liad
1 Asked on January 8, 2021 by anonymous-entity
0 Asked on January 5, 2021 by austin-weaver
0 Asked on January 4, 2021 by the_e
5 Asked on January 3, 2021 by ryan-berserkguard-nrby
1 Asked on December 31, 2020 by bluejayke
2d collision avoidance collision detection collision prediction javascript
0 Asked on December 25, 2020 by aimon-z
1 Asked on December 23, 2020 by gus-k
1 Asked on December 18, 2020 by hatinacat2000
Get help from others!
Recent Answers
Recent Questions
© 2023 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP