From 6a300c5b8fbe0ba61d66a8627d8544c9b01ce7fd Mon Sep 17 00:00:00 2001 From: fnicon Date: Mon, 23 Mar 2026 00:48:21 +0900 Subject: [PATCH] add initial boost --- .../new/world/race/components/countdown.lua | 5 +-- .../src/new/world/race/components/racer.lua | 32 +++++++++++++++---- game/love_src/src/new/world/race/init.lua | 13 ++++---- 3 files changed, 35 insertions(+), 15 deletions(-) diff --git a/game/love_src/src/new/world/race/components/countdown.lua b/game/love_src/src/new/world/race/components/countdown.lua index 0ff0785..c681952 100644 --- a/game/love_src/src/new/world/race/components/countdown.lua +++ b/game/love_src/src/new/world/race/components/countdown.lua @@ -22,7 +22,7 @@ end function world:load_world_state(world_state) self.e.components.animation.data.triggers_fn[4] = function () if (not self.disappear) then - world_state.components.world_state.data.state = "START" + world_state.data.state = "start" self.e.components.animation.data.anim_direction = 0 self.disappear = 2 end @@ -48,7 +48,8 @@ function world:ui_draw() self.data.label_color ) else - uir.draw_text("", + self.data.label = "" + uir.draw_text(self.data.label, self.data.pos[1], self.data.pos[2], self.data.label_color ) diff --git a/game/love_src/src/new/world/race/components/racer.lua b/game/love_src/src/new/world/race/components/racer.lua index 52e3bef..838f346 100644 --- a/game/love_src/src/new/world/race/components/racer.lua +++ b/game/love_src/src/new/world/race/components/racer.lua @@ -49,6 +49,11 @@ function world:load(entity, data) self.e = entity self.data = data or default self.map = {} + + self.countdown = {} + self.world_state = {} + + self.late_timer = 0 end function get(s) @@ -108,6 +113,11 @@ function world:update_race(dt) local desire_forward, desire_steer = self.e.components.actor.data.forward, self.e.components.actor.data.steer + if (self.world_state.data.state == "start" and self.countdown.data.label == "go") then + self.late_timer = self.late_timer + dt + self.initial_boost = false + end + local force = racing_force( desire_forward, desire_steer, grip, friction, @@ -122,14 +132,22 @@ function world:update_race(dt) local f_v = forward_velocity(dt, force, mass, velocity, max_speed, min_speed, magic_w.dampening) local o, o_v = orientation_velocity(dt, force, mass, self.data.orientation_speed, self.data.orientation, self.data.max_orientation_speed, self.data.min_orientation_speed) - self.data.velocity[1] = f_v - -- self.data.orientation_speed = o_v - self.data.orientation = o - -- if (self.data.velocity[1] ~= 0) then - self.data.pos = self.data.pos + o * f_v - -- end + if (self.world_state.data.state == "count down") then - self.data.inertia = force + else + if (self.late_timer < 1 and not self.initial_boost) then + f_v = f_v + 0.1 + self.initial_boost = true + end + self.data.velocity[1] = f_v + -- self.data.orientation_speed = o_v + self.data.orientation = o + -- if (self.data.velocity[1] ~= 0) then + self.data.pos = self.data.pos + o * f_v + -- end + + self.data.inertia = force + end end function world:update(dt) diff --git a/game/love_src/src/new/world/race/init.lua b/game/love_src/src/new/world/race/init.lua index 7b61584..15a1c3f 100644 --- a/game/love_src/src/new/world/race/init.lua +++ b/game/love_src/src/new/world/race/init.lua @@ -106,6 +106,7 @@ end function world:setup() local map + local countdown self.world_state = {} for _, d in pairs(self.entities_data) do local e = { @@ -122,17 +123,17 @@ function world:setup() map = e elseif e.type == "world_state" then self.world_state = e + elseif e.type == "countdown" then + countdown = e end end for _, e in ipairs(self.entities) do if (e.type == "racer") then - for t, c in pairs(e.components) do - if (c.name == "racer") then - c.map = map.components.map - end - end + e.components.racer.map = map.components.map + e.components.racer.countdown = countdown.components.countdown + e.components.racer.world_state = self.world_state.components.world_state elseif (e.type == "countdown") then - e.components.countdown:load_world_state(self.world_state) + e.components.countdown:load_world_state(self.world_state.components.world_state) end end end