【发布时间】:2016-04-19 02:56:14
【问题描述】:
我在下面有一个类,我将其附加到一个对象上,以使其围绕其枢轴旋转。我通过检查器发送了精灵的枢轴。
这也完全符合我的要求,但我遇到的问题是,每当我触摸并拖动它,然后再次触摸并拖动它时,它就会捕捉到一个新位置。
我希望它做的是,当它旋转然后再次旋转时,精灵保持相同的旋转并且不会捕捉到新位置,我希望精灵的角度重置为 0 . 接下来就是我要不断旋转的角度。所以如果我在正方向旋转它,角度应该在正方向上保持增加而不改变..例如0---> 360 ----> 720 ----->等等等等。然后当鼠标被释放时,精灵停留在相同的位置,但角度现在设置回 0。然后当再次单击旋转时,它会从那个确切的位置旋转。
到目前为止,这是我的代码,它非常适合旋转,但我想修改它以实现上述场景。有什么帮助吗?
public class Steering : MonoBehaviour {
float prevAngle,wheelAngle,wheelNewAngle = 0;
public SpriteRenderer sprite;
void Start () {
}
void Update () {
}
public float GetAngle(){
return wheelAngle;
}
void OnMouseDrag(){
Vector3 mouse_pos = Input.mousePosition;
Vector3 player_pos = Camera.main.WorldToScreenPoint(this.transform.position);
mouse_pos.x = mouse_pos.x - player_pos.x;
mouse_pos.y = mouse_pos.y - player_pos.y;
wheelNewAngle = Mathf.Atan2 (mouse_pos.y, mouse_pos.x) * Mathf.Rad2Deg;
if (Input.mousePosition.x > sprite.bounds.center.x) {
wheelAngle += wheelNewAngle - prevAngle;
} else {
wheelAngle -= wheelNewAngle - prevAngle;
}
this.transform.rotation = Quaternion.Euler (new Vector3(0, 0, wheelAngle));
Debug.Log (wheelAngle);
prevAngle = wheelNewAngle;
}
void OnMouseUp(){
prevAngle = wheelNewAngle;
wheelAngle = 0;
}
}
【问题讨论】:
-
TheOsirian 给出的答案实际上是完全正确的 :)
-
很遗憾这个问题太不清楚了。