Mathf.SmoothDampAnglestatic function SmoothDampAngle (current : float, target : float, ref currentVelocity : float, smoothTime : float, maxSpeed : float = Mathf.Infinity, deltaTime : float = Time.deltaTime) : floatParameters
DescriptionGradually changes an angle given in degrees towards a desired goal angle over time. The value is smoothed by some spring-damper like function. The function can be used to smooth any kind of value, positions, colors, scalars. The most common use is for smoothing a follow camera.
JavaScripts
// A simple smooth follow camera,
// that follows the targets forward direction var target : Transform; var smooth = 0.3; var distance = 5.0; private var yVelocity = 0.0; function Update () { // Damp angle from current y-angle towards target y-angle var yAngle : float = Mathf.SmoothDampAngle(transform.eulerAngles.y, target.eulerAngles.y, yVelocity, smooth); // Position at the target var position : Vector3 = target.position; // Then offset by distance behind the new angle position += Quaternion.Euler(0, yAngle, 0) * Vector3 (0, 0, -distance); // Apply the position transform.position = position; // Look at the target transform.LookAt(target); } using UnityEngine;
using System.Collections; public class example : MonoBehaviour { public Transform target; public float smooth = 0.3F; public float distance = 5.0F; private float yVelocity = 0.0F; void Update() { float yAngle = Mathf.SmoothDampAngle(transform.eulerAngles.y, target.eulerAngles.y, ref yVelocity, smooth); Vector3 position = target.position; position += Quaternion.Euler(0, yAngle, 0) * new Vector3(0, 0, -distance); transform.position = position; transform.LookAt(target); } } import UnityEngine
import System.Collections class example(MonoBehaviour): public target as Transform public smooth as single = 0.3F public distance as single = 5.0F private yVelocity as single = 0.0F def Update(): yAngle as single = Mathf.SmoothDampAngle(transform.eulerAngles.y, target.eulerAngles.y, yVelocity, smooth) position as Vector3 = target.position position += (Quaternion.Euler(0, yAngle, 0) * Vector3(0, 0, -distance)) transform.position = position transform.LookAt(target)
|
