Added Observation Scene to show the Replay
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.Splines;
|
||||
|
||||
namespace Unity.Cinemachine.Samples
|
||||
{
|
||||
public class RandomizedDollySpeed : SplineAutoDolly.ISplineAutoDolly
|
||||
{
|
||||
[Tooltip("Minimum speed the cart can travel")]
|
||||
public float MinSpeed = 2;
|
||||
[Tooltip("Maximum speed the cart can travel")]
|
||||
public float MaxSpeed = 10;
|
||||
[Tooltip("How quickly the cart can change speed")]
|
||||
public float Acceleration = 1;
|
||||
|
||||
float m_Speed;
|
||||
float m_TargetSpeed;
|
||||
|
||||
void SplineAutoDolly.ISplineAutoDolly.Validate() => MaxSpeed = Mathf.Max(MaxSpeed, MinSpeed);
|
||||
void SplineAutoDolly.ISplineAutoDolly.Reset() => m_Speed = m_TargetSpeed = (MinSpeed + MaxSpeed) / 2;
|
||||
bool SplineAutoDolly.ISplineAutoDolly.RequiresTrackingTarget => false;
|
||||
|
||||
public float GetSplinePosition(
|
||||
MonoBehaviour sender, Transform target,
|
||||
SplineContainer spline, float currentPosition,
|
||||
PathIndexUnit positionUnits, float deltaTime)
|
||||
{
|
||||
if (Application.isPlaying && deltaTime > 0)
|
||||
{
|
||||
if (Mathf.Abs(m_Speed - m_TargetSpeed) < 0.01f)
|
||||
m_TargetSpeed = UnityEngine.Random.Range(MinSpeed, MaxSpeed);
|
||||
if (m_Speed < m_TargetSpeed)
|
||||
m_Speed = Mathf.Min(m_TargetSpeed, m_Speed + Acceleration * deltaTime);
|
||||
if (m_Speed > m_TargetSpeed)
|
||||
m_Speed = Mathf.Max(m_TargetSpeed, m_Speed - Acceleration * deltaTime);
|
||||
|
||||
return currentPosition + m_Speed * deltaTime;
|
||||
}
|
||||
return currentPosition;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user