SmoothLookFrame
From Unify Community Wiki
(Difference between revisions)
(→Javascript) |
m (→C# Script (Improved)) |
||
(11 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
+ | Author: David O'Donoghue (a.k.a Trooper from ODD Games) | ||
+ | |||
== Description == | == Description == | ||
Looks at a target whilst keeping another target in view. | Looks at a target whilst keeping another target in view. | ||
== C# Script == | == C# Script == | ||
− | <csharp>using UnityEngine; | + | <syntaxhighlight lang="csharp">using UnityEngine; |
public class SmoothLookFrame : MonoBehaviour { | public class SmoothLookFrame : MonoBehaviour { | ||
Line 32: | Line 34: | ||
} | } | ||
− | }</csharp> | + | }</syntaxhighlight> |
+ | |||
+ | == C# Script (Smooth Rotate) == | ||
+ | <syntaxhighlight lang="csharp">using UnityEngine; | ||
+ | public class SmoothLookFrame : MonoBehaviour { | ||
+ | |||
+ | public Transform lookAtTarget; | ||
+ | public Transform frameTarget; | ||
+ | public float distance = 10.0f; | ||
+ | public float height = 5.0f; | ||
+ | public float damping = 2.0f; | ||
+ | |||
+ | private Vector3 direction; | ||
+ | private Vector3 wantedPosition; | ||
+ | |||
+ | void Update () { | ||
+ | if (!lookAtTarget || !frameTarget) | ||
+ | return; | ||
+ | |||
+ | direction = (frameTarget.position - lookAtTarget.position); | ||
+ | wantedPosition = frameTarget.position + (direction.normalized * distance); | ||
+ | |||
+ | wantedPosition.y = wantedPosition.y + height; | ||
+ | transform.position = Vector3.Lerp(transform.position, wantedPosition, damping * Time.deltaTime); | ||
+ | |||
+ | Quaternion rotate = Quaternion.LookRotation(lookAtTarget.position - transform.position); | ||
+ | transform.rotation = Quaternion.Slerp(transform.rotation, rotate, Time.deltaTime * damping); | ||
+ | } | ||
+ | }</syntaxhighlight> | ||
== Javascript == | == Javascript == | ||
− | < | + | <syntaxhighlight lang="javascript">var lookAtTarget : Transform; |
var frameTarget : Transform; | var frameTarget : Transform; | ||
var distance : float = 10.0; | var distance : float = 10.0; | ||
Line 57: | Line 87: | ||
transform.LookAt (lookAtTarget); | transform.LookAt (lookAtTarget); | ||
− | }</ | + | }</syntaxhighlight> |
Latest revision as of 04:31, 21 February 2012
Author: David O'Donoghue (a.k.a Trooper from ODD Games)
Contents |
[edit] Description
Looks at a target whilst keeping another target in view.
[edit] C# Script
using UnityEngine; public class SmoothLookFrame : MonoBehaviour { public Transform lookAtTarget; public Transform frameTarget; public float distance = 10.0f; public float height = 5.0f; public float damping = 2.0f; private Vector3 direction; private Vector3 wantedPosition; void FixedUpdate () { if (!lookAtTarget || !frameTarget) return; direction = (frameTarget.position - lookAtTarget.position); wantedPosition = frameTarget.position + (direction.normalized * distance); wantedPosition.y = wantedPosition.y + height; transform.position = Vector3.Lerp(transform.position, wantedPosition, damping * Time.deltaTime); transform.LookAt (lookAtTarget); } }
[edit] C# Script (Smooth Rotate)
using UnityEngine; public class SmoothLookFrame : MonoBehaviour { public Transform lookAtTarget; public Transform frameTarget; public float distance = 10.0f; public float height = 5.0f; public float damping = 2.0f; private Vector3 direction; private Vector3 wantedPosition; void Update () { if (!lookAtTarget || !frameTarget) return; direction = (frameTarget.position - lookAtTarget.position); wantedPosition = frameTarget.position + (direction.normalized * distance); wantedPosition.y = wantedPosition.y + height; transform.position = Vector3.Lerp(transform.position, wantedPosition, damping * Time.deltaTime); Quaternion rotate = Quaternion.LookRotation(lookAtTarget.position - transform.position); transform.rotation = Quaternion.Slerp(transform.rotation, rotate, Time.deltaTime * damping); } }
[edit] Javascript
var lookAtTarget : Transform; var frameTarget : Transform; var distance : float = 10.0; var height : float = 10.0; var damping : float = 2.0; private var direction : Vector3; private var wantedPosition : Vector3; function FixedUpdate () { if (!lookAtTarget || !frameTarget) return; direction = (frameTarget.position - lookAtTarget.position); wantedPosition = frameTarget.position + (direction.normalized * distance); wantedPosition.y = wantedPosition.y + height; transform.position = Vector3.Lerp(transform.position, wantedPosition, damping * Time.deltaTime); transform.LookAt (lookAtTarget); }