【问题标题】:how to rotate 30 degree, every i click left mouse button?每次单击鼠标左键如何旋转 30 度?
【发布时间】:2015-06-29 11:39:30
【问题描述】:

我是 Unity 新手。我想围绕 z 轴旋转一个简单的平面。问题是当平面旋转超过 360 度时,它不再旋转。

这是我的代码:

private float a;
private bool clicked = true;


void Update() {
    if(clicked)
    {
        if(Input.GetMouseButtonDown(0))
        {
            StartCoroutine(rotasi ());
        }
    }
}
IEnumerator rotasi()
{   
    var a = transform.eulerAngles.z+30;     
    while(true)
    {
        if(transform.eulerAngles.z < a)
        {
            transform.rotation = Quaternion.Lerp(transform.rotation,Quaternion.Euler(new Vector3(0,0,a)),Time.deltaTime*30f);
            clicked = false;

            yield return null;
        }

        StartCoroutine(wait());
        yield return 0;
    }   
}
IEnumerator wait()
{
    yield return new WaitForSeconds(.2f);
    clicked = true;
}

【问题讨论】:

  • 请不要使用unity 标签来回答与 Unity 游戏引擎相关的问题。有unity3d标签。

标签: c# unity3d rotation


【解决方案1】:

当你达到 360 度或以上时,回到 0 度。

0 度实际上与 360 度相同,但 Unity 可能不支持 360 度或以上。

【讨论】:

    【解决方案2】:

    检查您是否超过 360 度。如果是,请从最终结果中减去 360。

    if (transform.eulerAngles.z + 30 >= 360)
        var a = transform.eulerAngles.z + 30 - 360
    else
        var a = transform.eulerAngles.z + 30
    

    此代码可能更小,性能更高。但我想你明白了。

    【讨论】:

    • a= (transform.eulerAngles.z + 30) % 360
    • 是的,这就是我所说的更小、性能更高的代码。但我想确保他明白这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多