
Notiță de trișat
Controale editor
- C – comută modul freelook pentru camera 3D.
- ESC – ieșire din editorul de script și revenire la viewport 3D.
- Săgeți – scroll în Hierarchy Manager și navigare în cod.
- Selectează entitatea în Hierarchy, apoi Săgeți + PageUp/PageDown pentru translație.
- R – comută între modurile de translație și rotație.
- Pentru a crea o entitate: selectează World și apasă NEW.
- Pentru a adăuga componente sau comportamente: selectează entitatea și apasă NEW în secțiunea dorită.
- Componentele sunt doar date, comportamentele conțin logică.
Minix – Lua API Cheatsheet
Tot API-ul este sub tabela globală Engine
. Semnăturile sunt exacte.
Tipuri & convenții
EntityId
– id de entitate (userdata)vec3
–{ x=..., y=..., z=... }
quat
–{ x=..., y=..., z=..., w=... }
payload
– tabel (chei string → valori simple / vec3 / quat / EntityId)GetComponent
întoarce copie; persistă doar prinSetComponent
Componente
Engine.RegisterComponent{
name = "Transform",
fields = { Position="vec3", Rotation="quat", Scale="vec3" }
}
-- sugar identic:
Engine.Component("Renderable", { Color="string" })
Operare pe entități
local e = Engine.CreateEntity()
Engine.AddComponent(e, "Transform", {...})
local tr = Engine.GetComponent(e, "Transform")
tr.Position.y = tr.Position.y + 1
Engine.SetComponent(e, "Transform", tr)
Engine.ForEach("Transform", function(eid, tr) ... end)
Behaviors
Engine.RegisterBehavior{
name="Spinner", requires={"Transform"},
tick=function(s,e,dt) ... end
}
Engine.Behavior("Jumper",{requires={"Transform"},tick=function(...)end})
Engine.AttachBehavior(e, "Spinner")
Sisteme
Engine.RegisterSystem{
name="GravityPulse", mode="loop", tick=function(dt) ... end
}
Engine.RegisterSystem{
name="HitEcho", mode="event", listens={"Hit"},
onEvent=function(t,n,p) ... end
}
Evenimente
Engine.Emit(e, "Hit", { boost=2 })
Engine.Subscribe("Hit", function(e,n,p) ... end)
Engine.SubscribeEntity(e, "Hit", function(...) end)
Engine.Unsubscribe(id)
Timere
local t1 = Engine.After(1.5, function() ... end)
local t2 = Engine.Every(0.2, function() ... end)
Engine.ClearTimer(t2)
Input
local k = Engine.OnKeyDown("SPACE", function() ... end)
local u = Engine.OnKeyUp("ESC", function() ... end)
local m = Engine.OnMouseDown("LEFT", function() ... end)
Engine.Unsubscribe(k)
Spawn sugar
local e = Engine.Entity{
Transform = { Position={x=0,y=1,z=0} },
Renderable = { Color="Blue" },
Box = { Size={x=1,y=1,z=1} },
as = "Crate"
}
Utilitare
Engine.Global("Button", e)
Engine.Include("Scripts/ui.lua")
Engine.Log("hello from lua")
Rețete rapide
-- Box cu fizică + behavior
Engine.Component("Box", { Size="vec3" })
Engine.Behavior("Wiggle", {
requires={"Transform"},
tick=function(s,e,dt)
s.t=(s.t or 0)+dt
local tr=Engine.GetComponent(e,"Transform")
tr.Position.y=2+math.sin(s.t)*0.25
Engine.SetComponent(e,"Transform",tr)
end
})
local e=Engine.Entity{ Transform={Position={x=8,y=2,z=8}} }
Engine.AttachBehavior(e,"Wiggle")