Smoothened Leeches + increased Player jump height

This commit is contained in:
Melvin Weiß 2025-09-22 15:39:58 +02:00
parent ffd8e6b857
commit 88bd17c8c3
6 changed files with 40 additions and 43 deletions

View file

@ -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="."]

View file

@ -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

View file

@ -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

View file

@ -1,6 +1,6 @@
extends Item
func collect():
player.jump_strength = 1500
player.jump_strength = 1600
$SoundCollect.play()
return true

View file

@ -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"]

View file

@ -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;