【发布时间】:2020-03-17 16:42:12
【问题描述】:
我正在尝试围绕某个对象旋转相机。 另外,在旋转的某些特定部分,以及在某个角度,移动应该是缓慢的。
图示如下,绿色区域是慢动作区域,红色区域是应用的正常速度:
为此,我使用Transform.RotateAround(Vector3 point, Vector3 axis, float angle) 方法
所以,猜测慢速是原速度的一半,而 angleOfSlowMotionZone 是 90º,如图所示,我这样做:
-
计算相机到达慢区(绿色)所需的时间,即:
timeToArriveToSlowZone = (270 - (angleOfSlowMotionZone / 2)) / speed; -
计算结束慢区所需的时间:
timeToEndSlowZone = angleOfSlowMotionZone / slowSpeed; -
最后计算完成整个TurnAround的时间:
timeToFullTurn = timeToArriveToSlowZone + timeToEndSlowZone;
然后我调用一个协程来做这样的动作:
IEnumerator Rotation()
{
second = 0;
while(true)
{
second += Time.deltaTime;
if(second >= timeToFullTurn)
second = 0;
newSpeed = (second <= timeToArriveToSlowZone || second >= timeToArriveToSlowZone + timeToEndSlowZone) ? speed : slowSpeed;
transform.RotateAround(targetGO.transform.position, Vector3.up, newSpeed * Time.deltaTime);
yield return null;
}
}
我的问题是,每转一圈,放慢动作的那一刻都有些不同。我怎样才能将其修正为 EXACTLY 作为建议的角度?
【问题讨论】: