blob: c8e0aa531c623c7369388d7f71bdea0a1f6d5342 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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
75
76
77
78
79
|
---@diagnostic disable: undefined-global
function SafeInitCharacter(character, default_x, default_y)
character.x = character.x or default_x
character.y = character.y or default_y
character.y_velocity = character.y_velocity or 1
character.current_sprite = character.asset_dir .. "/sprites/idle.png"
end
function Setup()
SafeInitCharacter(player1Character, 250, 250)
SafeInitCharacter(player2Character, WIDTH - 250 - (250 / 2), 250)
end
gravity = 1.2 -- POSITIVE gravity
floor_y = HEIGHT - 250
function HandleP1Input()
if Input.isKeyPressedOnce("W") and player1Character.y == floor_y then
player1Character.y_velocity = player1Character.jump_strength * -1.0;
end
if Input.isKeyDown("D") then
player1Character.x = player1Character.x + player1Character.speed;
end
if Input.isKeyDown("A") then
player1Character.x = player1Character.x - player1Character.speed;
end
end
function HandleP2Input()
if Input.isKeyPressedOnce("UP") and player2Character.y == floor_y then
player2Character.y_velocity = player2Character.jump_strength * -1.0;
end
if Input.isKeyDown("RIGHT") then
player2Character.x = player2Character.x + player2Character.speed;
end
if Input.isKeyDown("LEFT") then
player2Character.x = player2Character.x - player2Character.speed;
end
end
function Update()
-- P1 physics
player1Character.y_velocity = player1Character.y_velocity + gravity
player1Character.y = player1Character.y + player1Character.y_velocity
if player1Character.y > floor_y then
player1Character.y = floor_y
player1Character.y_velocity = 0
end
-- P2 physics
player2Character.y_velocity = player2Character.y_velocity + gravity
player2Character.y = player2Character.y + player2Character.y_velocity
if player2Character.y > floor_y then
player2Character.y = floor_y
player2Character.y_velocity = 0
end
-- Render
queueTextureForRender(
player1Character.current_sprite,
math.floor(player1Character.x),
math.floor(player1Character.y)
)
queueTextureForRender(
player2Character.current_sprite,
math.floor(player2Character.x),
math.floor(player2Character.y)
)
-- Input
HandleP1Input()
HandleP2Input()
end
|