From 88bd17c8c3a39a02798f30b86d5690446c3a7b63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Melvin=20Wei=C3=9F?= Date: Mon, 22 Sep 2025 15:39:58 +0200 Subject: [PATCH] Smoothened Leeches + increased Player jump height --- enemies/leech/giant_leech.tscn | 6 +-- enemies/leech/leech.gd | 61 ++++++++++++------------------ icon.svg.import | 6 +++ items/permanent_items/high_jump.gd | 2 +- main.tscn | 6 ++- player/player.gd | 2 +- 6 files changed, 40 insertions(+), 43 deletions(-) diff --git a/enemies/leech/giant_leech.tscn b/enemies/leech/giant_leech.tscn index 41eefc4..e5d0e25 100644 --- a/enemies/leech/giant_leech.tscn +++ b/enemies/leech/giant_leech.tscn @@ -6,7 +6,7 @@ [ext_resource type="AudioStream" uid="uid://co07360hqn6fk" path="res://sounds/686321__cjspellsfish__punch-land-soft.wav" id="4_ps8gx"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_cq6dk"] -size = Vector2(2, 24) +size = Vector2(2, 15) [node name="Giant_Leech" type="Node2D"] scale = Vector2(1, 1.2) @@ -51,7 +51,7 @@ collision_layer = 0 collision_mask = 8 [node name="CollisionShape2D" type="CollisionShape2D" parent="RayCast2D"] -position = Vector2(0, 14.8) +position = Vector2(0, 25) shape = SubResource("RectangleShape2D_cq6dk") [node name="RayCast2D2" type="Area2D" parent="."] @@ -59,7 +59,7 @@ collision_layer = 0 collision_mask = 8 [node name="CollisionShape2D" type="CollisionShape2D" parent="RayCast2D2"] -position = Vector2(0, 14.8) +position = Vector2(0, 25) shape = SubResource("RectangleShape2D_cq6dk") [node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="."] diff --git a/enemies/leech/leech.gd b/enemies/leech/leech.gd index f5271c1..079d597 100644 --- a/enemies/leech/leech.gd +++ b/enemies/leech/leech.gd @@ -7,8 +7,6 @@ var angle = 0.0 if move_dir == 1 else PI @onready var segments : Array[Node] = $Segments.get_children() @onready var segment_count = segments.size() -var paused = false -var pause_time = 0.1 var iframes = 0.2 var iframe_time = 0 var dead = false @@ -19,43 +17,32 @@ func _ready() -> void: func _physics_process(delta: float) -> void: if dead: return - iframe_time = max(0, iframe_time - delta) - if not paused: - angle -= TAU * delta * angular_speed * move_dir - if(angle > PI or angle < 0): - paused = true - await get_tree().create_timer(pause_time).timeout - paused = false - angle = fmod(angle + PI, PI) - var y = position.length() - var ratio = - move_dir * broadth / (2 * y) - var rot_angle = - 2 * asin(ratio) - position = position.rotated(rot_angle) - if dead: - return - if(move_dir == 1 and angle < 1 or move_dir == -1 and angle > PI - 1): - var y = position.length() - var ratio = - move_dir * broadth / (2 * y) - var rot_angle = - 2 * asin(ratio) - - $RayCast2D.global_position = position.rotated(rot_angle) - $RayCast2D.rotation = rot_angle - if(move_dir == 1 and angle < 0.5 or move_dir == -1 and angle > PI - 0.5): - if(not $RayCast2D.has_overlapping_bodies()): - paused = true - await get_tree().create_timer(pause_time).timeout - paused = false - move_dir *= -1 - if dead: - return - for i in range(segment_count): - var segment_pos_data = calculate_segment_location_and_rotation(i) - if not is_instance_valid(segments[i]): - get_tree().get_root().print_tree_pretty() - segments[i].position = segment_pos_data.position - segments[i].rotation = segment_pos_data.rotation if not $RayCast2D2.has_overlapping_bodies(): position += 200 * delta * $EarthAligner.global_from_local(Vector2.DOWN) + var y = position.length() + var ratio = - move_dir * broadth / (2 * y) + var rot_angle = - 2 * asin(ratio) + iframe_time = max(0, iframe_time - delta) + angle -= TAU * delta * angular_speed * move_dir + if(angle > PI + abs(rot_angle) / 2 or angle < - abs(rot_angle) / 2): + angle = fmod(angle + PI, PI) + position = position.rotated(rot_angle) + if dead: + return + if(move_dir == 1 and angle < 1 or move_dir == -1 and angle > PI - 1): + $RayCast2D.global_position = position.rotated(rot_angle) + $RayCast2D.rotation = rot_angle + if(move_dir == 1 and angle < 0.5 or move_dir == -1 and angle > PI - 0.5): + if(not $RayCast2D.has_overlapping_bodies()): + move_dir *= -1 + if dead: + return + for i in range(segment_count): + var segment_pos_data = calculate_segment_location_and_rotation(i) + if not is_instance_valid(segments[i]): + get_tree().get_root().print_tree_pretty() + segments[i].position = segment_pos_data.position + segments[i].rotation = segment_pos_data.rotation func calculate_segment_location_and_rotation (i) -> Dictionary: var aerial_end_location = Vector2.from_angle(-angle) * broadth diff --git a/icon.svg.import b/icon.svg.import index 52efafd..6815464 100644 --- a/icon.svg.import +++ b/icon.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/items/permanent_items/high_jump.gd b/items/permanent_items/high_jump.gd index e729163..4e5a65f 100644 --- a/items/permanent_items/high_jump.gd +++ b/items/permanent_items/high_jump.gd @@ -1,6 +1,6 @@ extends Item func collect(): - player.jump_strength = 1500 + player.jump_strength = 1600 $SoundCollect.play() return true diff --git a/main.tscn b/main.tscn index c26f383..ae011bd 100644 --- a/main.tscn +++ b/main.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=14 format=3 uid="uid://cxo6bq26huau7"] +[gd_scene load_steps=15 format=3 uid="uid://cxo6bq26huau7"] [ext_resource type="PackedScene" uid="uid://cmaovvr15b3qk" path="res://player/player.tscn" id="2_1bvp3"] [ext_resource type="Texture2D" uid="uid://d3fpq76anm4t7" path="res://world/Background Prototype/Background prototype.png" id="3_kek77"] @@ -13,6 +13,7 @@ [ext_resource type="PackedScene" uid="uid://ca5ndobertnp4" path="res://water/water.tscn" id="10_4c57u"] [ext_resource type="Script" uid="uid://cpaskpj67pnaj" path="res://enemies/boss/boss_spawner.gd" id="10_efxa6"] [ext_resource type="PackedScene" uid="uid://cpe4s6vsn0ujd" path="res://enemies/boss/boss.tscn" id="11_efxa6"] +[ext_resource type="PackedScene" uid="uid://bpgo1djj8f1rg" path="res://items/permanent_items/high_jump.tscn" id="14_w48qg"] [node name="main" type="Node2D"] @@ -88,6 +89,9 @@ texture = ExtResource("3_kek77") script = ExtResource("10_efxa6") boss = ExtResource("11_efxa6") +[node name="HighJump" parent="." instance=ExtResource("14_w48qg")] +position = Vector2(139, -3123) + [connection signal="active_item_changed" from="Player" to="UIOverlay/ItemUI" method="_on_player_active_item_changed"] [connection signal="health_changed" from="Player" to="UIOverlay/Healthbar" method="_on_player_health_changed"] [connection signal="max_hp_changed" from="Player" to="UIOverlay/Healthbar" method="_on_player_max_hp_changed"] diff --git a/player/player.gd b/player/player.gd index f4baccd..c7dc1e3 100644 --- a/player/player.gd +++ b/player/player.gd @@ -19,7 +19,7 @@ var gravity = 100; # Movement var facing = -1; var hspeed = 150; -var jump_strength = 1100; +var jump_strength = 1200; var air_jumps_max = 1; var air_jumps_current = 1;