Manual/ Ejemplos

Scripts que se hablan

entity:getScript() devuelve la instancia del script de otra entidad: puedes leer sus datos y llamar a sus métodos. Así, un gestor de nivel puede coordinar a los demás.

Puerta.lua

local Puerta = { properties = { altura = 3.0, velocidad = 2.0 } }

function Puerta:Start()
    self.cerrada = self.entity.position
    self.abierta = self.cerrada + Vec3(0, self.altura, 0)
    self.abriendo = false
end

function Puerta:Abrir()
    if not self.abriendo then Audio.playOneShot("Audio/puerta.wav", self.cerrada) end
    self.abriendo = true
end

function Puerta:Update(dt)
    local destino = self.abriendo and self.abierta or self.cerrada
    local p = self.entity.position
    p.y = Mathf.moveTowards(p.y, destino.y, self.velocidad * dt)
    self.entity.position = p
end

return Puerta

Palanca.lua (en un trigger junto a la puerta)

local Palanca = { properties = { puerta = "Puerta" } }

function Palanca:OnTriggerStay(other)
    if other.name == "Jugador" and Input.getKeyDown("e") then
        local puerta = Scene.find(self.puerta)
        if puerta then puerta:getScript():Abrir() end
    end
end

return Palanca

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