diff --git a/system/player_input.modifier.wren b/system/player_input.modifier.wren index dfd47fd..68ba042 100644 --- a/system/player_input.modifier.wren +++ b/system/player_input.modifier.wren @@ -10,11 +10,11 @@ import "luxe: system/physics/physics3D.modifier" for Physics3D #block = data class Data { - var acceleration: Num = 2.0 - var decelleration: Num = 3.0 + var acceleration: Num = 1.0 + var decelleration: Num = 0.5 var speed_run: Num = 25.0 var speed_walk: Num = 15.0 - var ground_check_dist: Num = 0.05 + var ground_check_dist: Num = 0 var jump_impulse: Num = 20 var jump_grace_time: Num = 0.1 @@ -29,6 +29,9 @@ class Data { #hidden var is_grounded: Bool = false + + #hidden + var movement_active: Bool = true } #api @@ -56,7 +59,6 @@ class System is Modifier { #hidden attach(player: Entity, data: Data) { - Log.print("Attached!") if (!Character3D.has(player)) return Character3D.set.speed(player, data.speed_walk) data.target_speed = data.speed_walk @@ -82,15 +84,17 @@ class System is Modifier { data.is_grounded = true } - // Update movement input + // Get player's movement input var fore = Input.event_active("up", "game") ? -1 : 0 var back = Input.event_active("down", "game") ? 1 : 0 var left = Input.event_active("left", "game") ? -1 : 0 var right = Input.event_active("right", "game") ? 1 : 0 - data.input_target = Math.normalized(Math.mult(Transform.local_dir_to_world(_camera, right + left, 0, fore + back), [1, 0, 1])) - data.input_target = move_toward_vec(Character3D.get.input(player), data.input_target, data, delta) - Character3D.set.speed(player, Input.event_active("run", "game") ? data.speed_run : data.speed_walk) + // Turn this into a Float3 of (Left/Right, 0, Forward/Backward) that is relative to the player's facing direction + data.input_target = Math.normalized(Math.mult(Transform.local_dir_to_world(_camera, right + left, 0, fore + back), [1, 0, 1])) + data.input_target = move_toward_vec(Character3D.get.input(player), data.input_target, data, delta * 6) + + if (data.is_grounded) Character3D.set.speed(player, Input.event_active("run", "game") ? data.speed_run : data.speed_walk) if (Input.event_began("jump", "game") && data.is_grounded) { data.time_since_grounded = 0