Я уже некоторое время работаю над этим кодом. Уже существует тема с тем же кодом , но тема кажется мертвой, и я до сих пор не могу найти способ решить мою проблему.Поиском я пришел спросить себя, почему setRotate, который я делаю на дуло, также влияет на корпус моего пистолета?Потому что setRotate делается только на носу ...
Мой код:
package canons;
import javafx.scene.Parent;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Rectangle;
import javafx.scene.transform.Rotate;
public class Canon extends Parent {
private int posX = 500, posY = 250;
private double valeurAngle;
private Rectangle buse; // nuzzle
private Circle corps;
//private Rotate rotate;
public Canon(Color couleurCorps, Color couleurBuse) {
//rotate = new Rotate();
this.getChildren().addAll(getBuse(), getCorps());
getBuse().getTransforms().add(rotate);
this.setTranslateX(posX);
this.setTranslateY(posY);
}
public Rectangle getBuse() {
if(buse == null) { // sécurité, évite de recréer plusieurs fois le même objet
buse = new Rectangle();
buse.setWidth(60);
buse.setHeight(20);
buse.setArcWidth(15); // extrémités arrondies
buse.setArcHeight(30);
buse.setFill(Color.BLACK);
buse.setTranslateX(posX);
buse.setTranslateY(posY - buse.getHeight() / 2);
}
return buse;
}
public Circle getCorps() {
if(corps == null) { // sécurité, évite de recréer plusieurs fois le même objet
corps = new Circle(20);
corps.setTranslateX(posX);
corps.setTranslateY(posY);
}
return corps;
}
public void orienter(double angle) {
buse.setRotate(angle);
//buse.setTranslateY(Math.sin(angle));
}