Tipos especiales

Aprende qué tipos especiales existen, incluyendo Vector, Quaternion, y más.

Vector3

Decentraland usa vector3 datos para representar rutas, puntos en el espacio y direcciones. Los vectores también pueden usarse para definir orientaciones de rotación, como una alternativa más amigable a quaternions. Un objeto Vector3 contiene valores numéricos para cada uno de los x, y, y z eje.

const myVector: Vector3 = { x: 8, y: 1, z: 8 }

El Vector3 namespace contiene una serie de métodos útiles que puedes llamar para evitar tener que lidiar con la mayoría de las operaciones matemáticas con vectores. Escribe Vector3., y VS Studio mostrará un desplegable con todas las funciones disponibles.

A continuación hay algunas líneas que muestran la sintaxis para algunas operaciones básicas con vectores.

// Crear un objeto vector
let myVector = Vector3.create(3, 1, 5)

// Sintaxis alternativa para crear un objeto vector
let myOtherVector: Vector3 = { x: 8, y: 1, z: 8 }

// Editar uno de sus valores
myVector.x = 5

// Llamar funciones desde el namespace Vector3,
// Todas estas funciones requieren pasar objetos Vector3 en sus parámetros

let normalizedVector = Vector3.normalize(myVector)

let distance = Vector3.distance(myVector, myOtherVector)

let midPoint = Vector3.lerp(myVector, myOtherVector, 0.5)

Los objetos Vector3 son a menudo requeridos en los campos de varios components. Por ejemplo, el Transform component contiene Vector3 valores para el position y scale de la entidad.

Para crear un componente personalizado con parámetros que requieren valores Vector3, establece el tipo de estos parámetros como Schema.Vector3.

circle-exclamation

Atajos para escribir vectores de dirección

Existen los siguientes atajos para definir vectores genéricos:

  • Vector3.Zero() devuelve (0, 0, 0)

  • Vector3.Up() devuelve (0, 1, 0)

  • Vector3.Down() devuelve (0, -1, 0)

  • Vector3.Left() devuelve (-1, 0, 0)

  • Vector3.Right() devuelve (1, 0, 0)

  • Vector3.Forward() devuelve (0, 0, 1)

  • Vector3.Backward() devuelve (0, 0, -1)

Quaternions

Los quaternions se usan para almacenar información de rotación para el componente Transform. Un Quaternion está compuesto por cuatro valores numéricos entre -1 y 1: x, y, z, w.

Los quaternions son diferentes de la Euler ángulosarrow-up-right, la notación más común x, y y z notación con números que van de 0 a 360 con la que la mayoría de la gente está familiarizada. El engine expresa todas las rotaciones como Quaternions, por lo que tiene sentido evitar cálculos para convertir hacia y desde euler siempre que sea posible.

El Quaternion namespace contiene una serie de métodos útiles que puedes llamar para evitar tener que lidiar con muchas operaciones matemáticas. Escribe Quaternion., y VS Studio mostrará un desplegable con todas las funciones disponibles.

A continuación hay algunas líneas que muestran la sintaxis para algunas operaciones básicas con Quaternions.

Puesto que es mucho más fácil pensar en términos de grados de Euler, el SDK incluye un par de funciones para convertir hacia y desde Quaternions y Euler.

circle-info

💡 Tip: Evita ejecutar estas conversiones como parte de lógica recurrente dentro de un system, que se ejecuta en cada tick, ya que eso puede ser costoso. Estas conversiones son mayormente útiles para operaciones puntuales, como ajustar la rotación de una nueva entidad.

Los objetos Quaternion son a menudo requeridos en los campos de components. Por ejemplo, el Transform component contiene Quaternion valores para la rotación de la entidad.

Para crear un componente personalizado con parámetros que requieren valores Quaternion, establece el tipo de estos parámetros como Schema.Quaternion.

circle-exclamation

Escalares

Un escalar no es más que un número. Por esa razón, no tiene mucho sentido instanciar un Scalar objeto para almacenar datos, ya que puedes hacer lo mismo con un número. Sin embargo, las funciones en el Scalar namespace exponen varias funciones útiles (similares a las del Vector3 namespace), que pueden usarse con números.

circle-exclamation

Última actualización