我是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;
}
3条答案
按热度按时间ckocjqey1#
当你达到360度或以上时,回到0度。
0度实际上与360度相同,但Unity可能不支持360度或以上。
tkclm6bt2#
检查你是否超过了360度。如果是,就从你的最终结果中减去360度。
这段代码可以更小,性能更好,但我想你已经明白了。
mmvthczy3#
对于任何人有同样的问题,我是与连续旋转,我能够连续旋转五边形(因此72度)与此: