summaryrefslogtreecommitdiff
path: root/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/ExampleScenes/ExampleScripts/SmoothCameraFollow.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/ExampleScenes/ExampleScripts/SmoothCameraFollow.cs')
-rw-r--r--Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/ExampleScenes/ExampleScripts/SmoothCameraFollow.cs37
1 files changed, 37 insertions, 0 deletions
diff --git a/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/ExampleScenes/ExampleScripts/SmoothCameraFollow.cs b/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/ExampleScenes/ExampleScripts/SmoothCameraFollow.cs
new file mode 100644
index 0000000..80efdfb
--- /dev/null
+++ b/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/ExampleScenes/ExampleScripts/SmoothCameraFollow.cs
@@ -0,0 +1,37 @@
+using UnityEngine;
+
+namespace Pathfinding.Examples {
+ /// <summary>
+ /// Smooth Camera Following.
+ /// \author http://wiki.unity3d.com/index.php/SmoothFollow2
+ /// </summary>
+ [HelpURL("https://arongranberg.com/astar/documentation/stable/smoothcamerafollow.html")]
+ public class SmoothCameraFollow : VersionedMonoBehaviour {
+ public Transform target;
+ public float distance = 3.0f;
+ public float height = 3.0f;
+ public float damping = 5.0f;
+ public bool enableRotation = true;
+ public bool smoothRotation = true;
+ public float rotationDamping = 10.0f;
+ public bool staticOffset = false;
+
+ void LateUpdate () {
+ Vector3 wantedPosition;
+
+ if (staticOffset) {
+ wantedPosition = target.position + new Vector3(0, height, distance);
+ } else {
+ wantedPosition = target.TransformPoint(0, height, -distance);
+ }
+ transform.position = Vector3.Lerp(transform.position, wantedPosition, Time.deltaTime * damping);
+
+ if (enableRotation) {
+ if (smoothRotation) {
+ Quaternion wantedRotation = Quaternion.LookRotation(target.position - transform.position, target.up);
+ transform.rotation = Quaternion.Slerp(transform.rotation, wantedRotation, Time.deltaTime * rotationDamping);
+ } else transform.LookAt(target, target.up);
+ }
+ }
+ }
+}