【问题标题】:Rotation of a Sprite Around Its Pivot精灵围绕其轴心旋转
【发布时间】: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 给出的答案实际上是完全正确的 :)
  • 很遗憾这个问题太不清楚了。

标签: c# unity3d rotation


【解决方案1】:

精灵的角度是指旋转吗?如果您的代码中没有任何内容,我不确定位置会如何变化。它总是移动到同一个位置吗?我在可视化您的系统的外观时遇到了一点麻烦,但我希望这会有所帮助。

看起来您可能想要存储以前的鼠标位置,以便获得旋转每一帧的相对量。

在顶部:

Vector3 prevMousePos = Vector3.zero;

此方法将帮助获取玩家按下时的位置:

void OnMouseDown(){
    prevMousePos = Input.mousePosition;
}

然后在 OnMouseDrag() 中获取两个鼠标位置之间的差值以获取相对位置(如果您在按下后向左、向右、向上或向下移动鼠标):

Vector3 mouseDiff = Input.mousePosition - prevMousePos;

这样它将使用按下后的相对鼠标位置而不是当前位置,这应该会使事情变得平滑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多