Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将java lwjgl鼠标旋转转换为c#opentk_C#_Java_Rotation_Mouse_Opentk - Fatal编程技术网

将java lwjgl鼠标旋转转换为c#opentk

将java lwjgl鼠标旋转转换为c#opentk,c#,java,rotation,mouse,opentk,C#,Java,Rotation,Mouse,Opentk,我正在用C#制作一个模型查看器,我在让相机绕点移动时遇到了麻烦 在java中,我所要做的就是 if (Mouse.isButtonDown(0) && !Mouse.isButtonDown(1)) { yaw -= (float) Mouse.getDX(); pitch -= (float) Mouse.getDY(); } if (Mouse.isButtonDown(0) &a

我正在用C#制作一个模型查看器,我在让相机绕点移动时遇到了麻烦

在java中,我所要做的就是

        if (Mouse.isButtonDown(0) && !Mouse.isButtonDown(1)) {
            yaw -= (float) Mouse.getDX();
            pitch -= (float) Mouse.getDY();
        }
        if (Mouse.isButtonDown(0) && Mouse.isButtonDown(1)) {
            offset_z += (float) Mouse.getDY();
        }
        float wheel = (float) Mouse.getDWheel() / 960.0F;
        if (wheel > 1.0F)
            wheel = 1.0F;
        else if (wheel < -1.0F)
            wheel = -1.0F;
        scale -= scale * wheel;
        if (scale < 0.01F)
            scale = 0.01F;
if(Mouse.isButtonDown(0)和&!Mouse.isButtonDown(1)){
偏航-=(浮动)鼠标。getDX();
pitch-=(float)Mouse.getDY();
}
if(Mouse.isButtonDown(0)和Mouse.isButtonDown(1)){
offset_z+=(float)Mouse.getDY();
}
float wheel=(float)Mouse.getdweel()/960.0F;
如果(车轮>1.0F)
车轮=1.0F;
否则,如果(车轮<-1.0F)
车轮=-1.0F;
刻度-=刻度*轮;
如果(刻度<0.01F)
刻度=0.01F;
对不起,我是c的新手#
我在这里发布之前已经搜索了大约30分钟,所以…

您发布的代码将1-1映射到C#/OpenTK。在惯用C#中,它看起来像这样:

using OpenTK;
using OpenTK.Input;

class MouseControls
{
    public float Yaw { get; set; }
    public float Pitch { get; set; }
    public float Offset { get; set; }
    public float Scale { get; set; }

    MouseState mouse_previous;

    public void Update()
    {
        var mouse = Mouse.GetState();
        var delta = new Vector3(
            mouse.X - mouse_previous.X,
            mouse.Y - mouse_previous.Y,
            mouse.WheelPrecise - mouse_previous.WheelPrecise);

        if (mouse[MouseButton.Left] && !mouse[MouseButton.Right])
        {
            Yaw -= delta.X;
            Pitch -= delta.Y;
        }

        if (mouse[MouseButton.Left] && mouse[MouseButton.Right])
        {
            Offset += delta.Y;
        }

        Scale -= Scale * MathHelper.Clamp(delta.Z, -1.0f, 1.0f);
        Scale = Scale < 0.01f ? 0.01f : Scale;
    }
}
使用OpenTK;
使用OpenTK.Input;
类鼠标控件
{
公共浮点数{get;set;}
公共浮动间距{get;set;}
公共浮点偏移量{get;set;}
公共浮点标度{get;set;}
鼠标前一个;
公共无效更新()
{
var mouse=mouse.GetState();
var delta=新矢量3(
mouse.X-mouse_previous.X,
mouse.Y-mouse_previous.Y,
mouse.WheelPrecise-mouse_previous.WheelPrecise);
if(鼠标[MouseButton.Left]&&!鼠标[MouseButton.Right])
{
偏航-=δX;
螺距-=δY;
}
if(鼠标[MouseButton.Left]&鼠标[MouseButton.Right])
{
偏移量+=增量Y;
}
刻度-=刻度*MathHelper.夹具(δZ,-1.0f,1.0f);
刻度=刻度<0.01f?0.01f:刻度;
}
}