add reverse tire movment

This commit is contained in:
Travis Shears 2026-04-14 12:49:41 +02:00
parent 449145cf20
commit 8d4745832d
Signed by: travisshears
GPG key ID: CB9BF1910F3F7469

View file

@ -133,20 +133,28 @@ while 1 do love.event.push('stdin', io.read('*line')) end") :start))
(love.graphics.rectangle "line" collider.x collider.y collider.width collider.height))))
(fn love.update [dt]
; rotate player
(if (and (love.keyboard.isDown :d) (not (love.keyboard.isDown :a)))
(tset player :rot (+ player.rot (* dt 2))))
(if (and (love.keyboard.isDown :a) (not (love.keyboard.isDown :d)))
(tset player :rot (- player.rot (* dt 2))))
(if (or (love.keyboard.isDown :a) (love.keyboard.isDown :d))
; move / rotate player
(let [
new-x (+ player.x (* player.speed dt (math.cos player.rot)))
new-y (+ player.y (* player.speed dt (math.sin player.rot)))
d (love.keyboard.isDown :d)
a (love.keyboard.isDown :a)
e (love.keyboard.isDown :e)
q (love.keyboard.isDown :q)]
(case [d a e q]
[true false false false] (tset player :rot (+ player.rot (* dt 2)))
[false true false false] (tset player :rot (- player.rot (* dt 2)))
[false false true false] (tset player :rot (- player.rot (* dt 2)))
[false false false true] (tset player :rot (+ player.rot (* dt 2)))
)
(if (or d a e q)
(let [
dir-fn (if (or d a) #(+ $1 $2) #(- $1 $2))
new-x (dir-fn player.x (* player.speed dt (math.cos player.rot)))
new-y (dir-fn player.y (* player.speed dt (math.sin player.rot)))
(x y) (bump-world:move player new-x new-y)]
(tset player :x x)
(tset player :y y)))
(tset player :y y))))
;; Update camera to follow player (keep player centered on screen)
(tset camera :x (- player.x (/ screen.canvas-w 2)))