【发布时间】:2016-11-20 01:47:09
【问题描述】:
我是游戏开发的新手,我正在关注 Manning 的《Unity in action》一书。这是用于旋转游戏对象的代码 sn-p(来自书中):
public RotationAxes axes = RotationAxes.MouseXandY;
public float sensitivityHorizontal = 9.0f;
public float sensitivityVert = 9.0f;
private float rotationX = 0;
public float minimumVert = -45.0f;
public float maximumVert = 45.0f;
// Update is called once per frame
void Update () {
float input = Input.GetAxis ("Mouse X");
//Vertical Rotation
if (axes == RotationAxes.MouseY) {
rotationX-= Input.GetAxis ("Mouse Y") * sensitivityVert;
rotationX = Mathf.Clamp (rotationX, minimumVert, maximumVert);
float rotationY = transform.localEulerAngles.y;
transform.localEulerAngles = new Vector3 (rotationX, rotationY, 0);
}
}
这段代码实际上是有效的,但反过来说,当我向上移动鼠标时,当我向下移动时,对象会向下和向上旋转。我发现是rotationX-= Input.GetAxis ("Mouse Y") * sensitivityVert; 导致了问题,所以我将其更改为rotationX+= Input.GetAxis ("Mouse Y") * sensitivityVert;,现在它的旋转真的很奇怪!我确保它只在垂直轴上旋转,但它在所有方向上旋转,即即使在水平轴和 z 轴上。
有人可以告诉我哪里出错了吗?谢谢你
【问题讨论】:
-
你试过用sharpgl旋转吗?
-
不,我想这样做
-
您是在
Vector.Zero轮换工作吗?或者您尝试旋转的对象是否有一些默认旋转。 -
如果 (axes == RotationAxes.MouseY) 返回 false。请简化您的代码