Add optional Lua scripting module, examples, and validation

This commit is contained in:
emil28092005
2026-09-18 11:28:50 +03:00
parent 06210aac23
commit 5a67735ff4
45 changed files with 3887 additions and 92 deletions
+47
View File
@@ -0,0 +1,47 @@
local Player = faset.behavior {
id = "example.lua_player",
version = 1,
name = "Lua Player",
fields = {
move_speed = {
name = "Move speed", type = "number", default = 5,
min = 0, max = 30, units = "m/s"
},
jump_speed = {
name = "Jump speed", type = "number", default = 7,
min = 0, max = 20, units = "m/s"
}
}
}
function Player:on_start()
self.state.origin = self.entity:transform()
self.state.jumps = 0
faset.log("Lua player ready: A/D move, Space jump, E reset")
end
function Player:fixed_update(delta)
local input = faset.input()
if input.interact_pressed then
self.entity:teleport(self.state.origin)
self.entity:set_velocity { x = 0, y = 0, z = 0 }
self.state.jumps = 0
return
end
local velocity = self.entity:velocity()
velocity.x = input.horizontal * self.fields.move_speed
if input.jump_pressed and self.entity:is_grounded() then
velocity.y = self.fields.jump_speed
self.state.jumps = self.state.jumps + 1
faset.log("Jump", self.state.jumps)
end
self.entity:set_velocity(velocity)
if self.entity:transform().position.y < -10 then
self.entity:teleport(self.state.origin)
self.entity:set_velocity { x = 0, y = 0, z = 0 }
end
end
return Player