aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main.lua5
-rw-r--r--src/init.lua5
-rw-r--r--src/objs/player.lua20
3 files changed, 20 insertions, 10 deletions
diff --git a/main.lua b/main.lua
index 8c206c1..4c943e3 100644
--- a/main.lua
+++ b/main.lua
@@ -22,7 +22,10 @@ function love.load()
local tilemap = new_tilemap(64, 64)
scn.tilemap = tilemap
- set_tile(tilemap, 0, 0, 1)
+
+ for x=2, 12 do
+ set_tile(tilemap, x, 10, 1)
+ end
player = new_player(100, 100)
diff --git a/src/init.lua b/src/init.lua
index 246147a..18299fd 100644
--- a/src/init.lua
+++ b/src/init.lua
@@ -10,12 +10,13 @@ require "src.room_editor"
SCR_WIDTH = 320
SCR_HEIGHT = 180
+GRAVITY = 1000
+TERMINAL_VELOCITY = 900
WindowScale = 1
register_input("Left", {{"key", "left"}, {"key", "a"}})
register_input("Right", {{"key", "right"}, {"key", "d"}})
-register_input("Down", {{"key", "down"}, {"key", "s"}})
-register_input("Up", {{"key", "up"}, {"key", "w"}})
+register_input("Jump", {{"key", "space"}})
register_input("Right_Click", {{"mouse", 2}})
register_input("Left_Click", {{"mouse", 1}})
diff --git a/src/objs/player.lua b/src/objs/player.lua
index 58e5f3a..1d89f8a 100644
--- a/src/objs/player.lua
+++ b/src/objs/player.lua
@@ -1,4 +1,6 @@
PLAYER_SPEED = 100
+PLAYER_ACCEL = 30
+PLAYER_JUMP_FORCE = 350
register_comp("Body", function (ent, x, y, w, h, opts)
ent.vx = 0
@@ -15,17 +17,21 @@ function body_sys(ent, dt)
end
function player_movement_sys(player, dt)
- local inpx, inpy = input_direction("Left", "Right", "Up", "Down")
- inpx, inpy = normalize(inpx, inpy)
- player.vx = dlerp(player.vx, inpx * PLAYER_SPEED, 25 * dt)
- player.vy = dlerp(player.vy, inpy * PLAYER_SPEED, 25 * dt)
+ local inputx = bton(is_input_pressed("Right")) - bton(is_input_pressed("Left"))
+
+ player.vx = dlerp(player.vx, inputx * PLAYER_SPEED, PLAYER_ACCEL * dt)
+ player.vy = math.min(player.vy + GRAVITY * dt, TERMINAL_VELOCITY)
+
+ if player.box:touching_down() and is_input_just_pressed("Jump") then
+ player.vy = -PLAYER_JUMP_FORCE
+ end
end
function new_player(x, y)
local ent = new_entity()
- add_comp(ent, "Body", x, y, 16, 16, {
- offsetx = -8,
- offsety = -8,
+ add_comp(ent, "Body", x, y, 8, 14, {
+ offsetx = -4,
+ offsety = -6,
layers = {},
mask = {"hard"},
})