SmoothDamp:
static function SmoothDamp (current : float, target : float, ref currentVelocity : float, smoothTime : float, maxSpeed : float = Mathf.Infinity, deltaTime : float = Time.deltaTime) : float
Gradualmente cambia un valor hacia un objetivo en un determinado tiempo. La función se puede usar para suavizar la transición de valores, colores, posiciones, escalares….
Cuenta con los siguientes parámetros:
current La posición actual.
target La posición que estamos tratando de alcanzar.
currentVelocity La velocidad actual. Este valor es modificado por la función cada
vez que la llamamos.
smoothTime Aproximadamente el tiempo que tardaremos en alcanzar el objetivo.
Un valor pequeño hará que allcancemos el objetivo más rápido.
maxSpeed Opcionalmente nos permite fijar la velocidad máxima.
deltaTime El tiempo desde la última llamada a esta función. Por defecto
Time.deltaTime.
Un ejemplo:
var objetivo : Transform;
var tiempoEmpleado = 3;
private var yVelocity =4.0;
function Update () {
var newPosition : float = Mathf.SmoothDamp(transform.position.x,
objetivo.position.x, yVelocity, tiempoEmpleado);
transform.position = Vector3(newPosition, transform.position.y,
transform.position.z);
}
Salvamos y arrastramos el cubo a la variable expuesta "objetivo". Lo que aquí estamos haciendo es usar la función SmoothDamp para ir marcando la nueva posición de nuestro cubo. El punto de origen será la posición actual del cubo (en el eje x), el destino la posición actual en dicho eje del transform que marcamos como objetivo, le establecemos un tiempo para que el origen alcance al objetivo de 3 segundos y le limitamos la velocidad máxima que pueda alcanzar nuestro cubo a cuatro metros por segundo.
SmoothDampAngle:
static function SmoothDampAngle (current : float, target : float, ref currentVelocity : float, smoothTime : float, maxSpeed : float = Mathf.Infinity, deltaTime : float = Time.deltaTime) : float
Cambia gradualmente un ángulo dado en grados hacia el ángulo que constituye el objetivo en un tiempo determinado. El uso más común de esta función es para suavizar una cámara que esté siguiendo algún personaje o escena.
Repeat:
static function Repeat (t : float, length : float) : float
Introduce en un bucle el valor t, de tal manera que nunca sea más grande que length y nunca más pequeño que 0.
PingPong:
static function PingPong (t : float, length : float) : float
Hace rebotar el valor t, de tal manera que nunca sea mayor que length y nunca mayor que 0. El valor retornado se moverá atrás y adelante entre 0 y length.
InverseLerp:
static function InverseLerp (from : float, to : float, value : float) : float
Calcula el parámetro Lerp entre dos valores.
ClosestPowerOfTwo:
static function ClosestPowerOfTwo (value : int) : int
Retorna la potencia de dos más cercana.
IsPowerOfTwo:
static function IsPowerOfTwo (value : int) : boolean
Devuelve true si el valor es potencia de dos
NextPowerOfTwo:
static function NextPowerOfTwo (value : int) : int
Devuelve el valor de la siguiente potencia de dos.
DeltaAngle:
static function DeltaAngle (current : float, target : float) : float
Calcula la diferencia más corta entre dos ángulos dados.
Un par de correcciones al ejemplo de uso de la función "SmoothDamp":
ResponderEliminar1. La idea es que la variable "objetivo" no esté asociada al cubo, sino que a la esfera.
2. No se está limitando la velocidad máxima a 4 metros, sino que esa es la velocidad inicial.