From 5b22a39a9dea2dd0b252c52f0093233f32fc905f Mon Sep 17 00:00:00 2001 From: snoweuph Date: Sat, 4 Feb 2023 20:02:29 +0100 Subject: [PATCH] - Scale Movement by Delta Time - Make Player Movement Damped --- Scenes/Test Scene.tscn | 1 - Scripts/Enemy/EnemyController.gd | 6 +++--- Scripts/Player/PlayerController.gd | 20 ++++++++++++++------ 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/Scenes/Test Scene.tscn b/Scenes/Test Scene.tscn index d6f2edc..bc3e9af 100644 --- a/Scenes/Test Scene.tscn +++ b/Scenes/Test Scene.tscn @@ -20,7 +20,6 @@ layer_0/tile_data = PackedInt32Array(1114138, 262144, 1, 1048602, 0, 1, 983066, position = Vector2(203, 60) collision_layer = 2 script = ExtResource("2_pk6k4") -speed = 100 [node name="Sprite2D" type="Sprite2D" parent="Player"] texture = ExtResource("2_0flm2") diff --git a/Scripts/Enemy/EnemyController.gd b/Scripts/Enemy/EnemyController.gd index 287b1a4..a5ee7bb 100644 --- a/Scripts/Enemy/EnemyController.gd +++ b/Scripts/Enemy/EnemyController.gd @@ -90,9 +90,9 @@ func look_at_player(delta : float) -> float: self.rotation_degrees += clampf(average_angle, -2 * PI * delta * turn_speed, 2 * PI * delta * turn_speed) return average_angle -func follow_player(angle : float): +func follow_player(angle : float, delta : float): if(target_distance > follow_keep_distance): - self.apply_central_force(Vector2.RIGHT.rotated(self.rotation).rotated(deg_to_rad(angle)) * speed) + self.apply_central_force(Vector2.RIGHT.rotated(self.rotation).rotated(deg_to_rad(angle)) * speed * delta * 60) pass @@ -100,7 +100,7 @@ func _physics_process(delta: float): var angle := look_at_player(delta) match state: STATES.TARGETING: - follow_player(angle) + follow_player(angle, delta) STATES.IDLE: # Do Idle Stuff print("Dam, Nice a pause, time for a Coffee") diff --git a/Scripts/Player/PlayerController.gd b/Scripts/Player/PlayerController.gd index 6667297..f167eb8 100644 --- a/Scripts/Player/PlayerController.gd +++ b/Scripts/Player/PlayerController.gd @@ -1,16 +1,24 @@ extends CharacterBody2D -@export var speed = 50 +@export var speed = 100 +@export_range(0, 1) var damping_factor := 0.6 func get_move_vector(): var input_direction = Input.get_vector("move_left", "move_right", "move_up", "move_down").normalized() return input_direction - -func _physics_process(delta): - # Set Velcoity to Move Vector times speed - self.velocity = get_move_vector() * speed - # Do the Physics-Calculations of the Player +func move_player(delta : float): + if get_move_vector() == Vector2.ZERO: + # Damp Players Velocity if no Input + self.velocity = self.velocity * (1 - min(1, damping_factor * 60 * delta)) + else: + # Set Players Velocity to the Input Direction in the Players Speed + self.velocity = get_move_vector() * speed * delta * 60 + + # Update The Players Physics Calculations self.move_and_slide() pass +func _physics_process(delta : float): + move_player(delta) + pass