From 3236bdfd8b305354d7d418e628f26980577dd58b Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Thu, 27 Nov 2025 21:45:13 +0200 Subject: Make coyote time based on delta --- player.gd | 14 ++++++++------ player.tscn | 4 ++++ room_test1.tscn | 6 +----- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/player.gd b/player.gd index 900f472..df69f95 100644 --- a/player.gd +++ b/player.gd @@ -3,7 +3,7 @@ extends CharacterBody2D @export var speed: float @export var jump_strength: float -@export var coyote_max: int +@export var coyote_max_ms: float @export var jump_held_coef: float @export var curve_speed: float @@ -28,8 +28,8 @@ var prev_dir: float = 0.0 var jump_was_released: bool = true # coyote = 0 indicates on floor -# coyote > 0 indicates frames since on floor -var coyote: int = 0 +# coyote > 0 indicates seconds since on floor +var coyote: float = 0 # Called when the node enters the scene tree for the first time. func _ready() -> void: @@ -96,13 +96,15 @@ func _movement_normal(delta: float): if is_on_floor(): coyote = 0 else: - coyote += 1 + coyote += delta - var can_jump = coyote < coyote_max and jump_was_released + var can_jump = coyote < (coyote_max_ms * 0.001) and jump_was_released + if Input.is_action_just_pressed("jump"): + print_debug("coyote:", coyote, ", max:", coyote_max_ms * 0.001) if Input.is_action_pressed("jump") and can_jump: velocity.y = -jump_strength # Force coyote time to expire to forbid double jumps - coyote = coyote_max + coyote = coyote_max_ms jump_was_released = false if not Input.is_action_pressed("jump"): diff --git a/player.tscn b/player.tscn index 5e576e5..152142c 100644 --- a/player.tscn +++ b/player.tscn @@ -103,6 +103,10 @@ size = Vector2(6, 6) [node name="Player" type="CharacterBody2D"] script = ExtResource("2_onrkg") +speed = 70.0 +jump_strength = 200.0 +coyote_max_ms = 100.0 +jump_held_coef = 0.8 curve_speed = 0.1 [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] diff --git a/room_test1.tscn b/room_test1.tscn index 55a0449..2cd5b1b 100644 --- a/room_test1.tscn +++ b/room_test1.tscn @@ -9,7 +9,7 @@ [sub_resource type="Curve2D" id="Curve2D_m3rqw"] bake_interval = 1.0 _data = { -"points": PackedVector2Array(0, 0, 0, 0, 104, 72, 0, 0, 0, 0, 120, 3, 0, 0, 0, 0, 176, -28, 0, 0, 0, 0, 223, -43, 0, 0, 0, 0, 271, -53, 0, 0, 0, 0, 317, -83, 0, 0, 0, 0, 341, -128, 0, 0, 0, 0, 368, -159, 0, 0, 0, 0, 407, -167, 0, 0, 0, 0, 433, -152, 0, 0, 0, 0, 439, -125, 0, 0, 0, 0, 440, -65) +"points": PackedVector2Array(1.0275011, -4.2428093, -1.0275011, 4.2428093, 94, 73, -18.223213, 32.899162, 18.223213, -32.899162, 120, 4, -37.211525, 10.224476, 37.211525, -10.224476, 176, -28, -21.214048, 9.668041, 21.214048, -9.668041, 223, -43, -17.31901, 8.207402, 17.31901, -8.207402, 271, -53, -10.502692, 9.459378, 10.502692, -9.459378, 317, -83, -8.207402, 13.145754, 8.207402, -13.145754, 341, -128, -17.388563, 11.754669, 17.388563, -11.754669, 368, -159, -15.649707, -4.103701, 15.649707, 4.103701, 407, -167, -5.9121118, -9.459378, 5.9121118, 9.459378, 433, -152, 0, 0, 0, 0, 439, -125, 0, 0, 0, 0, 440, -65) } point_count = 12 @@ -36,10 +36,6 @@ tile_set = ExtResource("7_qglt1") [node name="Player" parent="." instance=ExtResource("2_qglt1")] position = Vector2(87, 91) collision_layer = 2 -speed = 70.0 -jump_strength = 200.0 -coyote_max = 10 -jump_held_coef = 0.8 [node name="GameCamera" parent="Player" instance=ExtResource("3_mrrx3")] unique_name_in_owner = true -- cgit v1.3