make move speed consistent

This commit is contained in:
asrael 2025-11-11 21:35:34 -06:00
parent 34e534b6f2
commit 2e2461c35a
3 changed files with 19 additions and 16 deletions

View file

@ -87,29 +87,36 @@
move-delta (* move-speed dt)]
(var moving false)
(var new-x cam-x)
(var new-z cam-z)
(var move-forward 0)
(var move-right 0)
(when (pxl8.key_down "w")
(set new-x (+ new-x (* forward-x move-delta)))
(set new-z (+ new-z (* forward-z move-delta)))
(set move-forward (+ move-forward 1))
(set moving true))
(when (pxl8.key_down "s")
(set new-x (- new-x (* forward-x move-delta)))
(set new-z (- new-z (* forward-z move-delta)))
(set move-forward (- move-forward 1))
(set moving true))
(when (pxl8.key_down "q")
(set new-x (- new-x (* right-x move-delta)))
(set new-z (- new-z (* right-z move-delta)))
(set move-right (- move-right 1))
(set moving true))
(when (pxl8.key_down "e")
(set new-x (+ new-x (* right-x move-delta)))
(set new-z (+ new-z (* right-z move-delta)))
(set move-right (+ move-right 1))
(set moving true))
(var new-x cam-x)
(var new-z cam-z)
(when moving
(let [len (math.sqrt (+ (* move-forward move-forward) (* move-right move-right)))]
(when (> len 0)
(let [norm-forward (/ move-forward len)
norm-right (/ move-right len)]
(set new-x (+ new-x (* move-delta (+ (* forward-x norm-forward) (* right-x norm-right)))))
(set new-z (+ new-z (* move-delta (+ (* forward-z norm-forward) (* right-z norm-right)))))))))
(when (and (>= new-x 0) (<= new-x grid-max)
(>= new-z 0) (<= new-z grid-max))
(set cam-x new-x)