From b3e6fa1aa9678fb526d5d2d112b5f16e79c55893 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Sat, 3 Oct 2020 19:34:58 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20Add=20quick=20fall=20to=20?= =?UTF-8?q?player=20jumps?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit credulone --- Scenes/Main.tscn | 10 +++++++--- Scenes/Player.tscn | 5 +---- Scripts/Player.gd | 28 +++++++++++++++++++++------- project.godot | 1 + 4 files changed, 30 insertions(+), 14 deletions(-) diff --git a/Scenes/Main.tscn b/Scenes/Main.tscn index 8ca68ae..b958a48 100644 --- a/Scenes/Main.tscn +++ b/Scenes/Main.tscn @@ -9,9 +9,13 @@ [node name="Conductor" parent="." instance=ExtResource( 2 )] song_offset = 200000.0 +[node name="Player" parent="." instance=ExtResource( 1 )] +position = Vector2( 622.258, 379.938 ) + [node name="ConveyorBelt" parent="." instance=ExtResource( 3 )] -position = Vector2( 662.439, 610.32 ) +position = Vector2( 640, 700 ) conveyor_speed = 100.0 -[node name="Player" parent="." instance=ExtResource( 1 )] -position = Vector2( 918.923, 436.874 ) +[node name="ConveyorBelt2" parent="." instance=ExtResource( 3 )] +position = Vector2( 640, 20 ) +conveyor_speed = -100.0 diff --git a/Scenes/Player.tscn b/Scenes/Player.tscn index 7019148..1b180d7 100644 --- a/Scenes/Player.tscn +++ b/Scenes/Player.tscn @@ -9,10 +9,7 @@ extents = Vector2( 20, 20 ) [node name="Player" type="KinematicBody2D"] collision_layer = 2 script = ExtResource( 2 ) -gravity = Vector2( 0, 10 ) -move_speed = 300.0 -jump_speed = 500.0 -jump_buffer_msec = 64.0 +jump_buffer_msec = 500.0 [node name="Sprite" type="Sprite" parent="."] texture = ExtResource( 1 ) diff --git a/Scripts/Player.gd b/Scripts/Player.gd index d38ecdf..b46454d 100644 --- a/Scripts/Player.gd +++ b/Scripts/Player.gd @@ -1,15 +1,19 @@ extends ExtendedKinematicBody2D class_name Player -export(Vector2) var gravity: Vector2 +export(Vector2) var gravity: Vector2 = Vector2(0, 10) var speed: Vector2 = Vector2.ZERO -export(float) var move_speed: float -export(float) var jump_speed: float -export(float) var jump_buffer_msec: float +export(float) var move_speed: float = 300 +export(float) var jump_speed: float = 500 +export(float) var jump_buffer_msec: float = 64 +export(float) var quick_fall_gravity_multiplier: float = 4 -var can_jump = false -var jump_buffer = 0 +var can_jump: bool = false +var jump_buffer: int = 0 + +var is_quick_falling: bool = false +var quick_fall_buffer: int = 0 func _physics_process(delta): @@ -20,18 +24,28 @@ func _physics_process(delta): var gravity_speed = speed * up_normal speed -= gravity_speed * floor_normal can_jump = true + is_quick_falling = false - speed += gravity + if is_quick_falling: + speed += gravity * quick_fall_gravity_multiplier + else: + speed += gravity var current_time = OS.get_ticks_msec() if Input.is_action_just_pressed("plr_up"): jump_buffer = current_time + if Input.is_action_just_released("plr_up"): + quick_fall_buffer = OS.get_ticks_msec() + if can_jump and current_time - jump_buffer <= jump_buffer_msec: speed += up_normal * jump_speed can_jump = false + if quick_fall_buffer > jump_buffer: + is_quick_falling = true + var movement = speed if is_on_floor(): diff --git a/project.godot b/project.godot index 32171ab..6ebbebf 100644 --- a/project.godot +++ b/project.godot @@ -45,6 +45,7 @@ run/main_scene="res://Scenes/Main.tscn" window/size/width=1280 window/size/height=720 +window/size/resizable=false [input]