将java lwjgl鼠标旋转转换为c#opentk
我正在用C#制作一个模型查看器,我在让相机绕点移动时遇到了麻烦 在java中,我所要做的就是将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
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:刻度;
}
}