Unity Mouse getaxis问题

时间:2015-12-18 01:16:19

标签: c# unity3d

我有一个脚本,它基本上只是旋转相机的x轴和y轴。

void Update () {
    float xRot = Input.GetAxis("Mouse X");
    float yRot = Input.GetAxis("Mouse Y");

    Vector3 rotate = new Vector3(xRot, yRot);

    transform.Rotate(rotate);

}

看起来鼠标X的输入实际上是鼠标Y,反之亦然。我知道我可以通过在Vecort3变量的赋值中翻转xRot和yRot来解决问题。所以我想知道是否有更好的方法来获得鼠标的x轴和y轴,或者我是否只是偶然地修改了我的项目。也很高兴知道如何解决问题。

2 个答案:

答案 0 :(得分:2)

这不是问题,只是事情如何。

左右是横轴。您的第一个想法是将它们分配给x值。问题是旋转围绕给定轴旋转,并且很可能左/右应该使物体向左或向右旋转。

但要做到这一点,你可以想到一个杆子(就像一个钢管舞者),你会绕着它旋转。如果你真的很接近它,那就像是左右旋转。但是这个轴正在上升,它是向上的向量。

这意味着要左右旋转,您可以围绕向上矢量旋转,但使用左右按钮作为水平轴。

显然,如果你想旋转以便向下看,你将围绕右(x)轴旋转并使用垂直运动。

总之,没有比反转输入更简单或更多的逻辑解决方案。你可以改变输入设置,使水平是垂直的,反之亦然,但我不推荐它。

答案 1 :(得分:0)

var pos = Input.mousePosition;
var x = pos.x;
var y = pos.y;

屏幕或窗口的左下角位于(0,0)。屏幕或窗口的右上角位于(Screen.width,Screen.height)。