From 7899b1444c9b12237b37bc83083067cd30b12260 Mon Sep 17 00:00:00 2001 From: fnicon Date: Sun, 22 Mar 2026 09:24:00 +0900 Subject: [PATCH] add min_speed --- .../world/top_down_race/component/race.lua | 5 +++++ .../love_src/src/world/top_down_race/init.lua | 9 +++++---- .../world/top_down_race/system/velocity.lua | 19 +++++++++++++------ .../world/top_down_race/template/racer.lua | 2 ++ 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/game/love_src/src/world/top_down_race/component/race.lua b/game/love_src/src/world/top_down_race/component/race.lua index e6497e5..2712831 100644 --- a/game/love_src/src/world/top_down_race/component/race.lua +++ b/game/love_src/src/world/top_down_race/component/race.lua @@ -5,6 +5,7 @@ local components = {} components.dict = { velocity = "race.velocity", max_speed = "race.max_speed", + min_speed = "race.min_speed", accel = "race.accel", grip = "race.grip", steer = "race.steer", @@ -22,6 +23,10 @@ function components.max_speed (c, x) c.data = x end +function components.min_speed (c, x) + c.data = x +end + function components.accel (c, x) c.data = x end diff --git a/game/love_src/src/world/top_down_race/init.lua b/game/love_src/src/world/top_down_race/init.lua index 667cedc..a2f3705 100644 --- a/game/love_src/src/world/top_down_race/init.lua +++ b/game/love_src/src/world/top_down_race/init.lua @@ -32,13 +32,14 @@ function wrapper:load(_args) assemblage = racer.assemble, data = { velocity = {0.0, 0.0}, - max_speed = 10.0, + max_speed = 1.0, + min_speed = 0.0, inertia = {0.0, 0.0}, - accel = 0.0, - brake = 0.0, + accel = 0.1, + brake = 0.1, grip = 0.0, - steer = 0.0, + steer = 0.1, mass = 0.0, streamline = 0.0 } diff --git a/game/love_src/src/world/top_down_race/system/velocity.lua b/game/love_src/src/world/top_down_race/system/velocity.lua index ed36cd4..c182029 100644 --- a/game/love_src/src/world/top_down_race/system/velocity.lua +++ b/game/love_src/src/world/top_down_race/system/velocity.lua @@ -14,6 +14,7 @@ system.__index = system system.pool = { pool = { race.dict.max_speed, + race.dict.min_speed, race.dict.velocity, race.dict.accel, race.dict.brake, @@ -27,6 +28,7 @@ system.pool = { system.components = { [race.dict.max_speed] = race.max_speed, + [race.dict.min_speed] = race.min_speed, [race.dict.velocity] = race.velocity, [race.dict.accel] = race.accel, @@ -53,6 +55,7 @@ end local function get(e) return e[race.dict.max_speed].data, + e[race.dict.min_speed].data, e[race.dict.velocity].data, e[race.dict.accel].data, e[race.dict.brake].data, @@ -141,8 +144,8 @@ end local magic_w = { tire = 0.0, floor = 0.0, - forward = 0.0, - steer = 0.0, + forward = 0.01, + steer = 0.1, drag_boost = 0.0, drag_halt = 0.0, inertia = 0.0, @@ -179,6 +182,7 @@ local p_right = love.keyboard.isDown("l") dict_debugs = { race.dict.max_speed, + race.dict.min_speed, race.dict.velocity, race.dict.accel, race.dict.brake, @@ -218,7 +222,7 @@ function system:update(dt) e[dict_debug_current].data = e[dict_debug_current].data + 1 end - local max_speed, velocity, accel, brake, grip, steer, inertia, mass, streamline = get(e) + local max_speed, min_speed, velocity, accel, brake, grip, steer, inertia, mass, streamline = get(e) local pos_x, pos_y = e["race.pos"].data[1], e["race.pos"].data[2] @@ -245,8 +249,10 @@ function system:update(dt) local a = force * dt / mass e[race.dict.velocity].data = e[race.dict.velocity].data + a - e[race.dict.velocity].data[1] = vm.clamp(e[race.dict.velocity].data[1], -max_speed, max_speed) - e["race.pos"].data = e["race.pos"].data + e[race.dict.velocity].data + e[race.dict.velocity].data[1] = vm.clamp(e[race.dict.velocity].data[1], min_speed, max_speed) + if (desire_forward ~= 0) then + e["race.pos"].data = e["race.pos"].data + e[race.dict.velocity].data + end e[race.dict.inertia].data = force end @@ -271,9 +277,10 @@ end function system:ui_draw() for _, e in ipairs(self.pool) do - local max_speed, velocity, accel, brake, grip, steer, inertia, mass, streamline = get(e) + local max_speed, min_speed, velocity, accel, brake, grip, steer, inertia, mass, streamline = get(e) draw_debug(640, 0, 1.0, 0.0, 1.0, { string.format("%s max_speed : %s", (debug_current == 1 and ">") or "", max_speed), + string.format("%s max_speed : %s", (debug_current == 21 and ">") or "", min_speed), string.format("%s velocity : %s", (debug_current == 2 and ">") or "", velocity), string.format("%s accel : %s", (debug_current == 3 and ">") or "", accel), string.format("%s brake : %s", (debug_current == 4 and ">") or "", brake), diff --git a/game/love_src/src/world/top_down_race/template/racer.lua b/game/love_src/src/world/top_down_race/template/racer.lua index 5761ead..bf1e618 100644 --- a/game/love_src/src/world/top_down_race/template/racer.lua +++ b/game/love_src/src/world/top_down_race/template/racer.lua @@ -5,6 +5,7 @@ local template = {} template.default_data = { velocity = {0.0, 0.0}, max_speed = 10.0, + min_speed = 0.0, accel = 10.0, brake = 10.0, @@ -16,6 +17,7 @@ template.default_data = { } function template.assemble(e, data) e:give(race.dict.max_speed, data.max_speed) + e:give(race.dict.min_speed, data.min_speed) e:give(race.dict.velocity, data.velocity[1], data.velocity[2]) e:give(race.dict.accel, data.accel)