Manual/ Referencia de la API

Scene

Buscar, crear, instanciar y destruir objetos; cambiar de escena.

Scene.find(nombre)Primera entidad con ese nombre, o nil.
Scene.findWithTag(tag)Primera entidad con esa etiqueta.
Scene.findAllWithTag(tag)Tabla con todas las entidades con esa etiqueta.
Scene.create(nombre, posición)Entidad vacía nueva.
Scene.instantiate(entidad, posición, giro)Copia una entidad con sus hijos y componentes (incluidos los scripts). posición y giro (grados) son opcionales.
Scene.instantiate("Prefabs/Enemigo", posición, giro)Crea una instancia de un prefab por su ruta dentro de Assets (con o sin .crprefab). Devuelve nil si no existe. Los prefabs se crean en el editor arrastrando un objeto de la Jerarquía al panel Proyecto.
Scene.destroy(entidad)Igual que entidad:destroy().
Scene.load(nombre)Cambia de escena al terminar el frame ("Nivel2" busca Nivel2.crscene).
Scene.name()Nombre de la escena actual.

Mundos grandes: origen flotante

Los números de las posiciones (float) solo tienen unas 7 cifras: lejos del centro todo tiembla. Cramion lo evita solo: cuando la cámara se aleja más de 2 km del origen, el mundo entero se desplaza (en pasos de 1024 m) para que vuelva a estar cerca, y guarda en doble precisión dónde está de verdad ese origen. Las mallas, la luz, las sombras, la física, los bloques, la navegación y el sonido siguen igual; tú no tienes que hacer nada si lees las posiciones cada frame (self.entity.position).

FunciónQué hace
Scene.origin()x, y, z (doble precisión) del origen actual del mundo.
Scene.toAbsolute(pos)x, y, z reales de una posición: úsalo para guardar posiciones en una partida.
Scene.toLocal(x, y, z)Vec3 local de una posición real guardada (al cargar).
function Script:OnOriginShift(offset)Se llama cuando el mundo se desplaza -offset: resta offset a las posiciones que tengas guardadas en variables (un destino, un punto de aparición).
function Script:Start()
    self.destino = Vec3(5000, 0, 200)
end

-- El mundo se desplazo: el destino guardado tambien.
function Script:OnOriginShift(offset)
    self.destino = self.destino - offset
end

-- Guardar y cargar la posicion del jugador sin perder precision
function Script:guardar()
    local x, y, z = Scene.toAbsolute(self.entity.position)
    Prefs.setString("jugador", x .. "," .. y .. "," .. z)
end

¿Algo no queda claro o falta algo? Pregunta en el Discord.