Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Finish part1 and fix jumping |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | lisp-game-jam-2020 |
| Files: | files | file ages | folders |
| SHA3-256: |
d243b754680361c4ba3a01a5bb677462 |
| User & Date: | chewbranca 2020-04-11 22:49:06 |
Context
|
2020-04-13
| ||
| 20:06 | Add initial prototype with https://ansimuz.itch.io/warped-city assets check-in: a6620266bc user: chewbranca tags: lisp-game-jam-2020 | |
|
2020-04-11
| ||
| 22:49 | Finish part1 and fix jumping check-in: d243b75468 user: chewbranca tags: lisp-game-jam-2020 | |
| 22:32 | Don't use local in functions check-in: e11c5f9a0c user: chewbranca tags: lisp-game-jam-2020 | |
Changes
Changes to src/fahombo/play-osms-part1.fnl.
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
(local ground-1 {})
(: world :add player player.x player.y (: player.img :getWidth) (: player.img :getHeight))
;;(: world :add ground-0 20 360 640 16) ; blog version
(: world :add ground-0 120 360 640 16) ; github version
(: world :add ground-1 0 448 640 32)
(fn update [dt set-mode]
(let [goal-x (+ player.x player.xVelocity)
goal-y (+ player.y player.yVelocity)
(x y) (: world :move player goal-x goal-y)]
(set player.x (lume.clamp x 5 1000))
(set player.y y))
;; apply friction
(let [df (- 1 (math.min 1 (* dt player.friction)))]
(set player.xVelocity (* player.xVelocity df))
(set player.yVelocity (* player.yVelocity df)))
;; apply gravity
(set player.yVelocity (+ player.yVelocity (* player.gravity dt)))
(when (= player.yVelocity 0) ;; TODO: FIXME
(set player.hasReachedMax false))
;; handle horizontal movement
(if
(and (love.keyboard.isDown "left" "a") (> player.xVelocity (- player.maxSpeed)))
(set player.xVelocity (- player.xVelocity (* player.acc dt)))
(and (love.keyboard.isDown "right" "d") (< player.xVelocity player.maxSpeed))
(set player.xVelocity (+ player.xVelocity (* player.acc dt))))
|
> > > > > > > > | | > > > > > > > > > > < < |
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
(local ground-1 {})
(: world :add player player.x player.y (: player.img :getWidth) (: player.img :getHeight))
;;(: world :add ground-0 20 360 640 16) ; blog version
(: world :add ground-0 120 360 640 16) ; github version
(: world :add ground-1 0 448 640 32)
(set player.filter (fn [item other]
(let [(x y w h) (: world :getRect other)
(px py pw ph) (: world :getRect item)
player-bottom (+ py ph)
other-bottom (+ y h)]
(if (<= player-bottom y)
:slide))))
(fn update [dt set-mode]
(let [goal-x (+ player.x player.xVelocity)
goal-y (+ player.y player.yVelocity)
(x y cols) (: world :move player goal-x goal-y player.filter)]
(set player.x (lume.clamp x 5 1000))
(set player.y y)
(each [i col (ipairs cols)]
(if
(> col.touch.y goal-y)
(do
(set player.hasReachedMax true)
(set player.isGrounded false))
(< col.normal.y 0)
(do
(set player.hasReachedMax false)
(set player.isGrounded true)))))
;; apply friction
(let [df (- 1 (math.min 1 (* dt player.friction)))]
(set player.xVelocity (* player.xVelocity df))
(set player.yVelocity (* player.yVelocity df)))
;; apply gravity
(set player.yVelocity (+ player.yVelocity (* player.gravity dt)))
;; handle horizontal movement
(if
(and (love.keyboard.isDown "left" "a") (> player.xVelocity (- player.maxSpeed)))
(set player.xVelocity (- player.xVelocity (* player.acc dt)))
(and (love.keyboard.isDown "right" "d") (< player.xVelocity player.maxSpeed))
(set player.xVelocity (+ player.xVelocity (* player.acc dt))))
|