Java jME3中鼠标模拟侦听器的单位是什么?

Java jME3中鼠标模拟侦听器的单位是什么?,java,3d,jmonkeyengine,Java,3d,Jmonkeyengine,下面的应用程序显示,inputManager.getCursorPosition()返回的鼠标X坐标可能是像素 同时,来自analogListener的累积值不是以像素为单位测量的,而是从0到0.6不等 它的单位是什么?是否可以获得相同单位的鼠标坐标(无需显示手动累积) 我很高兴你问这个问题。我在回答你之前的问题时有着完全相同的想法。似乎很随意地使用不同的分辨率,它似乎总是接近像素位置/1000。我不知道为什么旋转球体时会出现这种情况,而且它的值并不精确(尽管考虑到手动积累,这并不令人惊讶),我

下面的应用程序显示,
inputManager.getCursorPosition()
返回的鼠标X坐标可能是像素

同时,来自
analogListener
的累积
不是以像素为单位测量的,而是从
0
0.6
不等

它的单位是什么?是否可以获得相同单位的鼠标坐标(无需显示手动累积)


我很高兴你问这个问题。我在回答你之前的问题时有着完全相同的想法。似乎很随意地使用不同的分辨率,它似乎总是接近像素位置/1000。我不知道为什么旋转球体时会出现这种情况,而且它的值并不精确(尽管考虑到手动积累,这并不令人惊讶),我注意到,如果将速度设置为10,那么旋转在视觉上就完全像我用鼠标拖动表面一样发生。由于初始设置包含距离原点10的摄影机,因此单位可能是相对于原点的弧度,但我看不到对此的确认。
package tests.com.jme3;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.jme3.app.SimpleApplication;
import com.jme3.font.BitmapText;
import com.jme3.input.MouseInput;
import com.jme3.input.controls.AnalogListener;
import com.jme3.input.controls.MouseAxisTrigger;
import com.jme3.math.ColorRGBA;

public class Try_MouseUnits extends SimpleApplication  {


    private static final Logger log = LoggerFactory.getLogger(Try_MouseUnits.class);

    public static void main(String[] args) {
        Try_MouseUnits app = new Try_MouseUnits();
        app.setShowSettings(false);
        app.start(); // start the game
    }

    @Override
    public void simpleInitApp() {

        flyCam.setEnabled(false);

        setDisplayStatView(false); 
        setDisplayFps(false);

        final BitmapText hudText = new BitmapText(guiFont, false);          
        hudText.setSize(guiFont.getCharSet().getRenderedSize());      // font size
        hudText.setColor(ColorRGBA.Blue);                             // font color
        hudText.setText("");             // the text
        hudText.setLocalTranslation(300, hudText.getLineHeight(), 0); // position
        guiNode.attachChild(hudText);


        inputManager.addMapping("RotateX", new MouseAxisTrigger(MouseInput.AXIS_X, true));

        inputManager.addMapping("RotateX_negative", new MouseAxisTrigger(MouseInput.AXIS_X, false));

        /*
        inputManager.addMapping("RotateY", new MouseAxisTrigger(MouseInput.AXIS_Y, true));
        inputManager.addMapping("RotateY_negative", new MouseAxisTrigger(MouseInput.AXIS_Y, false));
        */

        AnalogListener analogListener = new AnalogListener() {

            float total = 0;

            @Override
            public void onAnalog(String name, float value, float tpf) {

                if ("RotateX".equals(name)) {
                    total += value;

                } else if ("RotateX_negative".equals(name)) {
                    total -= value;
                }               

                hudText.setText(String.format("total = %f; x = %f", total, inputManager.getCursorPosition().x));
            }
        };

        inputManager.addListener(analogListener, "RotateX", "RotateX_negative", "RotateY", "RotateY_negative");

    }
}