2015-08-20 24 views
1

当用户按下upArrow时,我想用Quaternion.Lerp旋转我的物体90度。但在每次旋转后,我都能看到它不会将我的对象完全旋转90度。它旋转大约88度。问题是什么?我怎么解决这个问题?Quaternion.Lerp不会以精确的角度旋转物体

if (Input.GetKeyDown(KeyCode.UpArrow)) 
    { 
     to.eulerAngles = transform.eulerAngles + new Vector3(90, 0, 0); 
     from.eulerAngles = transform.eulerAngles; 
     direction = "up"; 
    } 

    if("up".Equals(direction)) 
     transform.rotation = Quaternion.Lerp(from, to, Time.deltaTime*10); 

    if (transform.eulerAngles==to.eulerAngles) 
    { 
     direction = ""; 
    } 

回答

2

这太奇怪了。

只需添加

transform.eulerAngles = transform.eulerAngles; 

if (transform.eulerAngles==to.eulerAngles) 
{ 
    direction = ""; 
} 

和解决。我认为Unitys变换系统不是那么敏感,我测试它的日志,甚至它的旋转在日志上大约是88,在检查器中它是90.因此我添加了这个代码,它完成了。