Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.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
Visual studio 统一,自定义相机控制鼠标移动脚本有强烈的漂移_Visual Studio_Unity3d_Camera - Fatal编程技术网

Visual studio 统一,自定义相机控制鼠标移动脚本有强烈的漂移

Visual studio 统一,自定义相机控制鼠标移动脚本有强烈的漂移,visual-studio,unity3d,camera,Visual Studio,Unity3d,Camera,它不起作用 using System.Runtime.InteropServices; //for mouse reset int mouseXPos = 960; //half of 1920 int mouseYPos = 540; //half of 1080 [DllImport("user32.dll")] static extern bool SetCursorPos(int X, int Y); SetCursorPos(mouseXPos, mouseYPos);//Call t

它不起作用

using System.Runtime.InteropServices; //for mouse reset
int mouseXPos = 960; //half of 1920
int mouseYPos = 540; //half of 1080
[DllImport("user32.dll")]
static extern bool SetCursorPos(int X, int Y);
SetCursorPos(mouseXPos, mouseYPos);//Call this when you want to set the mouse position
在FixeUpdate中:

mousePos = Input.mousePosition;
mousePos.z = turnSpeed;
mousePos = Camera.main.ScreenToWorldPoint(mousePos);
transform.LookAt(mousePos);
mousePos.z是相机所看到的目标距离相机的距离。 鼠标应该放在屏幕中间,但是当程序被建立并在编辑器中时(我必须抵消MouxPoS和MouthyPOS来处理全屏播放窗口),鼠标不会被设置到中心,所以有漂移,并且视图缓慢地移动。 它似乎被关闭了2.3像素,当我做一个大的鼠标移动时,它不会回到零,它被关闭了0.1或0.2像素

视频示例: 在日志中可以看到向量3应该是0,0,5。我禁用了视频的旋转。

您确实不应该使用系统库来控制用户输入,尤其是在Unity中。使用
Cursor.lockState
Cursor.visible
属性控制光标。特别是,您要做的似乎是将光标移到屏幕的中心。这可以通过以下方式完成:

/**
*将光标锁定到游戏窗口的中心。
*/
私有void锁游标()
{
Cursor.lockState=CursorLockMode.Locked;
}
// ...
//在某些行为中。。。
私有void Start()
{
锁定光标();
}
有关更多信息,请参阅