现在,我有两个按钮,旋转正交电影摄影机围绕我的播放器,一个顺时针90度,一个逆时针90度。按钮的On Click()分别从相机上的脚本调用这两个函数:
public void CameraRotateL()
{
if (PauseMenu.isPaused == false)
transform.RotateAround(player.transform.position, Vector3.up, 90);
}
public void CameraRotateR()
{
if (PauseMenu.isPaused == false)
transform.RotateAround(player.transform.position, Vector3.up, -90);
}
这工作完美,但我想为相机明显旋转通过90度在很短的时间内,当按钮被点击。我试过:
transform.RotateAround(player.transform.position, Vector3.up, (90/timeToRotate) * Time.deltaTime);
但结果是按钮在一个单一的帧中移动相机很小的量。
我假设我可能需要使用某种类型的协程或比我现在尝试的更复杂的东西,但希望这可以在不使用补间库的情况下完成。提前感谢您的任何指导!
我试着从度数和timeToRotate
计算速度,并将其乘以Time.deltaTime
,但使用按钮调用此函数只能在一帧内旋转相机少量,而不是在一秒钟内平滑旋转90度。
1条答案
按热度按时间xriantvc1#
可以使用协程或使用
Update()
函数来逐渐更改旋转。这个方法是正确的,但是你需要多次调用它才能工作,因为它会随着时间的推移不断地改变旋转:
一种方法是在点击对象时设置一个目标旋转,然后逐渐旋转,直到它足够接近目标旋转
您可以简化代码,不在Vector3中存储startRotation和targetRotation,而是在四元数中存储。但我相信这种方式更容易理解