我有一些代码,里面有一个带有透视摄像头的亚场景。我想要几个eventhandlers,它们在subscene上使用mouseposition。
然而,相机似乎对注册位置有影响。摄影机translatez属性越大,失真越严重。
例如,如果我想拖动场景,第一次拖动会使它跳得很远。
我的相机:
private void setCamera(){
camera = new PerspectiveCamera(true);
camera.setNearClip(0.1);
camera.setFarClip(10000.0);
camera.setTranslateX(300);
camera.setTranslateY(350);
camera.setTranslateZ(-3000);
camera.setRotationAxis(Rotate.X_AXIS);
camera.setRotate(25);
camera.setFieldOfView(40);
}
这是我创建亚场景的地方:
private SubScene createMapSubScene(StackPane wrapper){
double stageWidth = stage.getWidth();
double stageHeight = stage.getHeight();
double menuBarHeight = vMenuBar.getHeight();
mapSubScene = new SubScene(wrapper, stageWidth,stageHeight-menuBarHeight);
mapSubScene.setCamera(this.getCamera());
return mapSubScene;
}
这是控制器部分:
game.getMapPane().setOnDragDetected(drag ->{
System.out.println("DragDetectet");
game.getMapPane().setOnMousePressed(event -> {
//Position, an der drag-event gestartet wurde
paneSourceX = event.getX();
paneSourceY = event.getY();
event.consume();
});
game.getMapPane().setOnMouseDragged(event ->{
//Position, an die Maus hingedragged wurde
double paneTargetX = event.getX();
double paneTargetY = event.getY();
game.getMapSubScene().setTranslateX(paneTargetX-paneSourceX);
game.getMapSubScene().setTranslateY(paneTargetY-paneSourceY);
event.consume();
});
} );
有没有办法让这项工作,或是拖放或其他鼠标控制的操作根本不是一个选项透视相机(我也尝试过使用subscenes节点,这没什么区别)
希望有答案!提前谢谢。
暂无答案!
目前还没有任何答案,快来回答吧!