Added Observation Scene to show the Replay

This commit is contained in:
Thorbjoern
2025-05-26 18:56:25 +02:00
parent 37c6bd8269
commit c304bc0e10
211 changed files with 60070 additions and 14 deletions
@@ -0,0 +1,48 @@
using UnityEngine;
namespace Unity.Cinemachine.Samples
{
/// <summary>
/// Will match a GameObject's position and rotation to a target's position
/// and rotation, with damping
/// </summary>
[ExecuteAlways]
public class DampedTracker : MonoBehaviour
{
[Tooltip("The target to track")]
public Transform Target;
[Tooltip("How fast the GameObject moves to the target position")]
public float PositionDamping = 1;
[Tooltip("How fast the rotation aligns with target rotation")]
public float RotationDamping = 1;
void OnEnable()
{
if (Target != null)
transform.SetPositionAndRotation(Target.position, Target.rotation);
}
void LateUpdate()
{
if (Target != null)
{
// Match the player's position
float t = Damper.Damp(1, PositionDamping, Time.deltaTime);
var pos = Vector3.Lerp(transform.position, Target.position, t);
// Rotate my transform to make my up match the target's up
var rot = transform.rotation;
t = Damper.Damp(1, RotationDamping, Time.deltaTime);
var srcUp = transform.up;
var dstUp = Target.up;
var axis = Vector3.Cross(srcUp, dstUp);
if (axis.sqrMagnitude > 0.001f)
{
var angle = UnityVectorExtensions.SignedAngle(srcUp, dstUp, axis) * t;
rot = Quaternion.AngleAxis(angle, axis) * rot;
}
transform.SetPositionAndRotation(pos, rot);
}
}
}
}