通常鼠标锁定在窗口上并且不可见;以第一人称射击游戏的方式控制相机。
我的理解是你从JMonkey窗口解锁鼠标并通过调用
使其可见inputManager.setCursorVisible(true);
然而,这没有明显效果。这在以下示例程序中进行了演示:
public class Main extends SimpleApplication {
public static void main(String[] args) {
Main app = new Main();
app.start();
}
@Override
public void simpleInitApp() {
Box b = new Box(Vector3f.ZERO, 1, 1, 1);
Geometry geom = new Geometry("Box", b);
Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
mat.setColor("Color", ColorRGBA.Blue);
geom.setMaterial(mat);
inputManager.setCursorVisible(true);
rootNode.attachChild(geom);
}
}
调用flyCam.setDragToRotate(true);
解锁鼠标但也会导致一些DragToRotate行为(毫无疑问)
答案 0 :(得分:1)
对此的解决方案似乎也必须禁用flycam。所以
inputManager.setCursorVisible(true);
flyCam.setEnabled(false);
或者作为一个完整的例子
public class Main extends SimpleApplication {
public static void main(String[] args) {
Main app = new Main();
app.start();
}
@Override
public void simpleInitApp() {
Box b = new Box(Vector3f.ZERO, 1, 1, 1);
Geometry geom = new Geometry("Box", b);
Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
mat.setColor("Color", ColorRGBA.Blue);
geom.setMaterial(mat);
inputManager.setCursorVisible(true);
flyCam.setEnabled(false);
//flyCam.setDragToRotate(true);
inputManager.setCursorVisible(true);
rootNode.attachChild(geom);
}
}
答案 1 :(得分:1)
禁用FlyCam
是实现此目的的一种方法,但更好的方法是永远不要首先添加它。如果为应用程序创建新的构造函数并调用SimpleApplication
的第二个构造函数,则可以传入要使用的应用程序状态列表,这些完全替换标准集,以便您可以准确选择所需的应用程序。
答案 2 :(得分:-1)
或者简单地说:
flyCam.setDragToRotate(true);
inputManager.setCursorVisible(true);
flyCam仍然可以开启