110. ESTRUCTURA MATHF (y III)










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.

POSTED BY UnityScripts
DISCUSSION 1 Comment

One Response to : 110. ESTRUCTURA MATHF (y III)

  1. Un par de correcciones al ejemplo de uso de la función "SmoothDamp":

    1. 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.

Leave a Reply

Con la tecnología de Blogger.