本篇分享一些有意思的代码片段 ~

Designing a Jump in Unity

随着 jumpTime 时间延长 proportionCompleted 值变小,thisFrameJumpVector 插值向量越大。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
IEnumerator JumpRoutine()
{
rigidbody.velocity = Vector2.zero;
float timer = 0;

while(jumpButtonPressed && timer < jumpTime)
{
//Calculate how far through the jump we are as a percentage
//apply the full jump force on the first frame, then apply less force
//each consecutive frame

float proportionCompleted = timer / jumpTime;
Vector2 thisFrameJumpVector = Vector2.Lerp(jumpVector, Vector2.zero, proportionCompleted);
rigidbody.AddForce(thisFrameJumpVector);
timer += Time.deltaTime;
yield return null;
}

jumping = false;
}

TimeClass

  • Time.time:[只读]表示从游戏开发到现在的时间,会随着游戏的暂停而停止计算。
  • Time.timeSinceLevelLoad:[只读]表示从当前Scene开始到目前为止的时间,也会随着暂停操作而停止。
  • Time.fixedTime:[只读]表示以秒计游戏开始的时间,固定时间以定期间隔更新[相当于fixedDeltaTime] 直到达到time属性。
  • Time.fixedDeltaTime:表示以秒计间隔,在物理和其他固定帧率进行更新,在Edit/ProjectSettings/Time的Fixed Timestep可以自行设置。
  • Time.maximumDeltaTime:一帧能获得的最长时间。物理和其他固定帧速率更新(类似MonoBehaviour FixedUpdate)。
  • Time.SmoothDeltaTime:[只读]表示一个平稳的deltaTime,根据前 N帧的时间加权平均的值。
  • Time.timeScale:时间缩放,默认值为1。若设置小于1表示时间减慢。若设置大于1,表示时间加快。若设置为0 则暂停。可以用来加速/减速/暂停游戏,非常有用。
  • Time.frameCount:[只读]总帧数
  • Time.realtimeSinceStartup:[只读]表示自游戏开始后的总时间,即使暂停也会不断的增加。
  • Time.captureFramerate:表示设置每秒的帧率,然后不考虑真实时间。
  • Time.unscaledDeltaTime:[只读]不考虑timescale时候与deltaTime相同,若timescale被设置,则无效。
  • Time.unscaledTime:[只读]不考虑timescale时候与time相同,若timescale被设置,则无效。

未完待续