1 # Defines a struct representing the player, which is controlled by WASD keys
5 struct Player(pos,prev_pos:Vector2)
6 WALK_SPEED := Num32(500.)
8 FRICTION := Num32(0.99)
9 SIZE := Vector2(30, 30)
10 COLOR := Color(0x60, 0x60, 0xbF)
12 func update(p:@Player)
13 target_x := C_code:Num32`
14 (Num32_t)((IsKeyDown(KEY_A) ? -1 : 0) + (IsKeyDown(KEY_D) ? 1 : 0))
16 target_y := C_code:Num32`
17 (Num32_t)((IsKeyDown(KEY_W) ? -1 : 0) + (IsKeyDown(KEY_S) ? 1 : 0))
19 target_vel := Vector2(target_x, target_y).norm() * Player.WALK_SPEED
21 vel := (p.pos - p.prev_pos)/World.DT
22 vel *= Player.FRICTION
23 vel = vel.mix(target_vel, Player.ACCEL)
25 p.prev_pos, p.pos = p.pos, p.pos + World.DT*vel
28 DrawRectangleV(p.pos, Player.SIZE, Player.COLOR)