平滑字符旋转
问题描述:
这是我在四个主要方向移动代码:平滑字符旋转
if (Input.GetKeyDown(KeyCode.RightArrow)){
transform.forward = new Vector3(0f, 0f, 1f);
}
else if (Input.GetKeyDown(KeyCode.LeftArrow)){
transform.forward = new Vector3(0f, 0f, -1f);
}
else if (Input.GetKeyDown(KeyCode.DownArrow)){
transform.forward = new Vector3(1f, 0f, 0f);
}
else if (Input.GetKeyDown(KeyCode.UpArrow)){
transform.forward = new Vector3(-1f, 0f, 0f);
}
我的性格立即在旅游的四个方向,我遇到的问题是试图找出我怎么能平滑旋转在两个方向之间。我想说的是,如果角色指向北方,而你按下按钮向西,而不是立即向西转,我希望看到角色向西方向平滑地旋转。
我搜索并尝试过的教程,但没有一个工作。任何解决方案
答
看看Slerp功能。这可能会做你想做的。
http://unity3d.com/support/documentation/ScriptReference/Quaternion.Slerp.html
简单的例子:
newdir.y=-135; // depends on which axis you want to turn...
transform.rotation = Quaternion.Lerp(transform.rotation, newdir, Time.deltaTime * smoothSpeed);
所以你基本上得到您的当前旋转的四元数。将其复制到新的四元数中,并增加或减少一个或多个轴上的旋转。
这不起作用,也没有给出一个很好的例子在键盘命令。 – SpicyWeenie
@Paul你已经有了一个关于如何获得KeyPresses的例子。你所要做的就是在那里添加那个片段。我编辑我的帖子来展示一个简单的例子。 – w00