Compare commits

..

5 Commits

Author SHA1 Message Date
6d967bf2bf extended enemy dashthrough improvement to aimed dash behaviour
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 20s
Create tag and build when new code gets to main / Test (push) Successful in 7m24s
Create tag and build when new code gets to main / Export (push) Successful in 9m32s
2026-02-06 12:10:21 +01:00
e87a228dd2 fixed dashing through terrain so easily when targeting enemy 2026-02-06 11:52:29 +01:00
e8ff01e097 fixed toolbox menu issue 2026-02-06 11:02:38 +01:00
66a71067cc fixed a few issues and also tuto triggers
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 21s
Create tag and build when new code gets to main / Test (push) Successful in 7m20s
Create tag and build when new code gets to main / Export (push) Successful in 9m42s
2026-02-05 17:26:20 +01:00
7a938b245e refresh level selection
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 18s
Create tag and build when new code gets to main / Test (push) Successful in 6m11s
Create tag and build when new code gets to main / Export (push) Successful in 7m35s
2026-02-05 17:06:32 +01:00
15 changed files with 213 additions and 53 deletions

View File

@@ -97,8 +97,8 @@ func load_scene(scene_path : String, in_background : bool = false) -> void:
if not _background_loading: if not _background_loading:
change_scene_to_resource() change_scene_to_resource()
return return
ResourceLoader.load_threaded_request(_scene_path)
set_process(true) set_process(true)
ResourceLoader.load_threaded_request(_scene_path)
if _check_loading_screen() and not _background_loading: if _check_loading_screen() and not _background_loading:
change_scene_to_loading_screen() change_scene_to_loading_screen()
@@ -108,6 +108,7 @@ func _unhandled_key_input(event : InputEvent) -> void:
get_tree().quit() get_tree().quit()
func _ready() -> void: func _ready() -> void:
process_mode = Node.PROCESS_MODE_ALWAYS
set_process(false) set_process(false)
func _process(_delta) -> void: func _process(_delta) -> void:

View File

@@ -3,19 +3,21 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://by682i537c1qg" uid="uid://by682i537c1qg"
path="res://.godot/imported/xbox_button_a_outline.png-45ac6b087c5e9a82a5a0b446c63f4da4.ctex" path.s3tc="res://.godot/imported/xbox_button_a_outline.png-45ac6b087c5e9a82a5a0b446c63f4da4.s3tc.ctex"
path.etc2="res://.godot/imported/xbox_button_a_outline.png-45ac6b087c5e9a82a5a0b446c63f4da4.etc2.ctex"
metadata={ metadata={
"vram_texture": false "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
} }
[deps] [deps]
source_file="res://assets/ui/input-prompts/Xbox Series/Default/xbox_button_a_outline.png" source_file="res://assets/ui/input-prompts/Xbox Series/Default/xbox_button_a_outline.png"
dest_files=["res://.godot/imported/xbox_button_a_outline.png-45ac6b087c5e9a82a5a0b446c63f4da4.ctex"] dest_files=["res://.godot/imported/xbox_button_a_outline.png-45ac6b087c5e9a82a5a0b446c63f4da4.s3tc.ctex", "res://.godot/imported/xbox_button_a_outline.png-45ac6b087c5e9a82a5a0b446c63f4da4.etc2.ctex"]
[params] [params]
compress/mode=0 compress/mode=2
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0 compress/uastc_level=0
@@ -23,7 +25,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
mipmaps/generate=false mipmaps/generate=true
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" roughness/src_normal=""
@@ -37,4 +39,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false process/hdr_as_srgb=false
process/hdr_clamp_exposure=false process/hdr_clamp_exposure=false
process/size_limit=0 process/size_limit=0
detect_3d/compress_to=1 detect_3d/compress_to=0

View File

@@ -3,19 +3,21 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://dl73t0kxkaxp0" uid="uid://dl73t0kxkaxp0"
path="res://.godot/imported/xbox_button_a_outline.svg-e0a03a1d1c96455de9e4ad067974d23b.ctex" path.s3tc="res://.godot/imported/xbox_button_a_outline.svg-e0a03a1d1c96455de9e4ad067974d23b.s3tc.ctex"
path.etc2="res://.godot/imported/xbox_button_a_outline.svg-e0a03a1d1c96455de9e4ad067974d23b.etc2.ctex"
metadata={ metadata={
"vram_texture": false "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
} }
[deps] [deps]
source_file="res://assets/ui/input-prompts/Xbox Series/Vector/xbox_button_a_outline.svg" source_file="res://assets/ui/input-prompts/Xbox Series/Vector/xbox_button_a_outline.svg"
dest_files=["res://.godot/imported/xbox_button_a_outline.svg-e0a03a1d1c96455de9e4ad067974d23b.ctex"] dest_files=["res://.godot/imported/xbox_button_a_outline.svg-e0a03a1d1c96455de9e4ad067974d23b.s3tc.ctex", "res://.godot/imported/xbox_button_a_outline.svg-e0a03a1d1c96455de9e4ad067974d23b.etc2.ctex"]
[params] [params]
compress/mode=0 compress/mode=2
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0 compress/uastc_level=0
@@ -23,7 +25,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
mipmaps/generate=false mipmaps/generate=true
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" roughness/src_normal=""
@@ -37,7 +39,7 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false process/hdr_as_srgb=false
process/hdr_clamp_exposure=false process/hdr_clamp_exposure=false
process/size_limit=0 process/size_limit=0
detect_3d/compress_to=1 detect_3d/compress_to=0
svg/scale=1.0 svg/scale=1.0
editor/scale_with_editor_scale=false editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false editor/convert_colors_with_editor_theme=false

View File

@@ -3,19 +3,21 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://cjh5cnvdbq5ku" uid="uid://cjh5cnvdbq5ku"
path="res://.godot/imported/xbox_button_b_outline.svg-3f51fcd4202da59d6f8184f7aaff1e2b.ctex" path.s3tc="res://.godot/imported/xbox_button_b_outline.svg-3f51fcd4202da59d6f8184f7aaff1e2b.s3tc.ctex"
path.etc2="res://.godot/imported/xbox_button_b_outline.svg-3f51fcd4202da59d6f8184f7aaff1e2b.etc2.ctex"
metadata={ metadata={
"vram_texture": false "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
} }
[deps] [deps]
source_file="res://assets/ui/input-prompts/Xbox Series/Vector/xbox_button_b_outline.svg" source_file="res://assets/ui/input-prompts/Xbox Series/Vector/xbox_button_b_outline.svg"
dest_files=["res://.godot/imported/xbox_button_b_outline.svg-3f51fcd4202da59d6f8184f7aaff1e2b.ctex"] dest_files=["res://.godot/imported/xbox_button_b_outline.svg-3f51fcd4202da59d6f8184f7aaff1e2b.s3tc.ctex", "res://.godot/imported/xbox_button_b_outline.svg-3f51fcd4202da59d6f8184f7aaff1e2b.etc2.ctex"]
[params] [params]
compress/mode=0 compress/mode=2
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0 compress/uastc_level=0
@@ -23,7 +25,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
mipmaps/generate=false mipmaps/generate=true
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" roughness/src_normal=""
@@ -37,7 +39,7 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false process/hdr_as_srgb=false
process/hdr_clamp_exposure=false process/hdr_clamp_exposure=false
process/size_limit=0 process/size_limit=0
detect_3d/compress_to=1 detect_3d/compress_to=0
svg/scale=1.0 svg/scale=1.0
editor/scale_with_editor_scale=false editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false editor/convert_colors_with_editor_theme=false

View File

@@ -3,19 +3,21 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://bfkj4neu0m0rm" uid="uid://bfkj4neu0m0rm"
path="res://.godot/imported/xbox_rt_outline.svg-ccfca5331455b64f1729ac9257bae6c9.ctex" path.s3tc="res://.godot/imported/xbox_rt_outline.svg-ccfca5331455b64f1729ac9257bae6c9.s3tc.ctex"
path.etc2="res://.godot/imported/xbox_rt_outline.svg-ccfca5331455b64f1729ac9257bae6c9.etc2.ctex"
metadata={ metadata={
"vram_texture": false "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
} }
[deps] [deps]
source_file="res://assets/ui/input-prompts/Xbox Series/Vector/xbox_rt_outline.svg" source_file="res://assets/ui/input-prompts/Xbox Series/Vector/xbox_rt_outline.svg"
dest_files=["res://.godot/imported/xbox_rt_outline.svg-ccfca5331455b64f1729ac9257bae6c9.ctex"] dest_files=["res://.godot/imported/xbox_rt_outline.svg-ccfca5331455b64f1729ac9257bae6c9.s3tc.ctex", "res://.godot/imported/xbox_rt_outline.svg-ccfca5331455b64f1729ac9257bae6c9.etc2.ctex"]
[params] [params]
compress/mode=0 compress/mode=2
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0 compress/uastc_level=0
@@ -23,7 +25,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
mipmaps/generate=false mipmaps/generate=true
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" roughness/src_normal=""
@@ -37,7 +39,7 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false process/hdr_as_srgb=false
process/hdr_clamp_exposure=false process/hdr_clamp_exposure=false
process/size_limit=0 process/size_limit=0
detect_3d/compress_to=1 detect_3d/compress_to=0
svg/scale=1.0 svg/scale=1.0
editor/scale_with_editor_scale=false editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false editor/convert_colors_with_editor_theme=false

View File

@@ -24,6 +24,9 @@ use_collision = true
size = Vector3(1, 17.5, 9.5) size = Vector3(1, 17.5, 9.5)
material = ExtResource("3_1qo78") material = ExtResource("3_1qo78")
[node name="Player" parent="." index="7" unique_id=1309399929]
transform = Transform3D(0.99999994, 0, 0, 0, 1, 0, 0, 0, 0.99999994, 3, 0, 0)
[node name="GroundedSpawner" parent="." index="8" unique_id=580981173 node_paths=PackedStringArray("Target") instance=ExtResource("4_jaqjx")] [node name="GroundedSpawner" parent="." index="8" unique_id=580981173 node_paths=PackedStringArray("Target") instance=ExtResource("4_jaqjx")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.5, 1, -42.5) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.5, 1, -42.5)
EnemyToSpawn = ExtResource("5_iq67o") EnemyToSpawn = ExtResource("5_iq67o")

View File

@@ -6,6 +6,31 @@
[ext_resource type="Material" uid="uid://bm5f7jraqm8n0" path="res://assets/materials/greybox/m_greybox_secondary.tres" id="5_r26ni"] [ext_resource type="Material" uid="uid://bm5f7jraqm8n0" path="res://assets/materials/greybox/m_greybox_secondary.tres" id="5_r26ni"]
[ext_resource type="Material" uid="uid://cqha1a2h1dg86" path="res://assets/materials/greybox/m_greybox_medium.tres" id="5_u8sr4"] [ext_resource type="Material" uid="uid://cqha1a2h1dg86" path="res://assets/materials/greybox/m_greybox_medium.tres" id="5_u8sr4"]
[ext_resource type="PackedScene" uid="uid://y77cdg7gg3y7" path="res://maps/levels/_arenas/playtest_1.tscn" id="6_qd7a7"] [ext_resource type="PackedScene" uid="uid://y77cdg7gg3y7" path="res://maps/levels/_arenas/playtest_1.tscn" id="6_qd7a7"]
[ext_resource type="PackedScene" uid="uid://b8aet6m4m2i83" path="res://scenes/tuto_trigger/TutoTrigger.tscn" id="7_r26ni"]
[ext_resource type="Texture2D" uid="uid://dl73t0kxkaxp0" path="res://assets/ui/input-prompts/Xbox Series/Vector/xbox_button_a_outline.svg" id="8_6c6r2"]
[ext_resource type="Texture2D" uid="uid://bfkj4neu0m0rm" path="res://assets/ui/input-prompts/Xbox Series/Vector/xbox_rt_outline.svg" id="9_v7818"]
[ext_resource type="Texture2D" uid="uid://cjh5cnvdbq5ku" path="res://assets/ui/input-prompts/Xbox Series/Vector/xbox_button_b_outline.svg" id="10_hocby"]
[sub_resource type="BoxShape3D" id="BoxShape3D_6c6r2"]
size = Vector3(6.5, 9, 7.5)
[sub_resource type="BoxShape3D" id="BoxShape3D_v7818"]
size = Vector3(10.5, 12.5, 7.5)
[sub_resource type="BoxShape3D" id="BoxShape3D_hocby"]
size = Vector3(3, 12.5, 7.5)
[sub_resource type="BoxShape3D" id="BoxShape3D_ovxxa"]
size = Vector3(3, 12.5, 6)
[sub_resource type="BoxShape3D" id="BoxShape3D_5ibpd"]
size = Vector3(3.5, 7, 10.5)
[sub_resource type="BoxShape3D" id="BoxShape3D_6rkcg"]
size = Vector3(5.5, 6.5, 3)
[sub_resource type="BoxShape3D" id="BoxShape3D_p8dgc"]
size = Vector3(3, 6.5, 5.5)
[node name="Main" unique_id=955321579 instance=ExtResource("1_jyq54")] [node name="Main" unique_id=955321579 instance=ExtResource("1_jyq54")]
@@ -852,3 +877,91 @@ omni_range = 7.0
[node name="OmniLight3D27" type="OmniLight3D" parent="Lights" index="29" unique_id=1849438050] [node name="OmniLight3D27" type="OmniLight3D" parent="Lights" index="29" unique_id=1849438050]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20, 24.5, -51.5) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20, 24.5, -51.5)
omni_range = 4.5 omni_range = 4.5
[node name="Tutorials" type="Node3D" parent="." index="10" unique_id=955125222]
[node name="TutoTrigger" parent="Tutorials" index="0" unique_id=840713937 instance=ExtResource("7_r26ni")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.5, 1, -20)
first_input_texture = ExtResource("8_6c6r2")
tuto_text = "Mantle"
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tutorials/TutoTrigger" index="1" unique_id=518998736]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.25, 3.5, -1.75)
shape = SubResource("BoxShape3D_6c6r2")
[node name="TutoTrigger2" parent="Tutorials" index="1" unique_id=878603028 instance=ExtResource("7_r26ni")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8, 2.5, -37.5)
first_input_texture = ExtResource("8_6c6r2")
tuto_text = "Jump"
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tutorials/TutoTrigger2" index="1" unique_id=1454863883]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.75, 3.25, -1.75)
shape = SubResource("BoxShape3D_v7818")
[node name="TutoTrigger3" parent="Tutorials" index="2" unique_id=1537320837 instance=ExtResource("7_r26ni")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 2.5, -37.5)
first_input_texture = ExtResource("8_6c6r2")
second_input_texture = ExtResource("8_6c6r2")
tuto_text = "Double jump"
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tutorials/TutoTrigger3" index="1" unique_id=216496744]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.25, -1.75)
shape = SubResource("BoxShape3D_hocby")
[node name="TutoTrigger4" parent="Tutorials" index="3" unique_id=903897281 instance=ExtResource("7_r26ni")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 7.5, -30.5)
first_input_texture = ExtResource("8_6c6r2")
complex_input_text = "against wall"
tuto_text = "Wall jump"
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tutorials/TutoTrigger4" index="1" unique_id=1224334781]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.25, -1)
shape = SubResource("BoxShape3D_ovxxa")
[node name="TutoTrigger5" parent="Tutorials" index="4" unique_id=1703929757 instance=ExtResource("7_r26ni")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13.5, 18.5, -30.5)
first_input_texture = ExtResource("9_v7818")
complex_input_text = "with speed"
tuto_text = "Slide"
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tutorials/TutoTrigger5" index="1" unique_id=614350904]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.75, 0.5, 12.25)
shape = SubResource("BoxShape3D_5ibpd")
[node name="TutoTrigger6" parent="Tutorials" index="5" unique_id=1739438130 instance=ExtResource("7_r26ni")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 19, 19)
first_input_texture = ExtResource("8_6c6r2")
complex_input_text = "while mantling"
tuto_text = "Improved jump"
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tutorials/TutoTrigger6" index="1" unique_id=821335302]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.25, 0.25, -1.5)
shape = SubResource("BoxShape3D_6rkcg")
[node name="TutoTrigger7" parent="Tutorials" index="6" unique_id=1993844947 instance=ExtResource("7_r26ni")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -17.5, 21, 24)
first_input_texture = ExtResource("8_6c6r2")
complex_input_text = "double tap"
tuto_text = "Try to wall run"
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tutorials/TutoTrigger7" index="1" unique_id=1194306224]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.25, 0.25, -1.5)
shape = SubResource("BoxShape3D_6rkcg")
[node name="TutoTrigger8" parent="Tutorials" index="7" unique_id=540710346 instance=ExtResource("7_r26ni")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -37, 25, 10)
first_input_texture = ExtResource("10_hocby")
tuto_text = "dash"
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tutorials/TutoTrigger8" index="1" unique_id=1793181148]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.25, -3.75)
shape = SubResource("BoxShape3D_p8dgc")
[node name="TutoTrigger9" parent="Tutorials" index="8" unique_id=2062889854 instance=ExtResource("7_r26ni")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -37, 25, -6)
first_input_texture = ExtResource("10_hocby")
tuto_text = "dash"
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tutorials/TutoTrigger9" index="1" unique_id=192598019]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.25, -3.75)
shape = SubResource("BoxShape3D_p8dgc")

View File

@@ -47,7 +47,7 @@ transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 35.5, 30.5, -42.5)
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 26, 30.5, -42.5) transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 26, 30.5, -42.5)
[node name="FixedDashthroughTarget7" parent="Targets" index="4" unique_id=282429016 instance=ExtResource("4_invhv")] [node name="FixedDashthroughTarget7" parent="Targets" index="4" unique_id=282429016 instance=ExtResource("4_invhv")]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 10.5, 3.5, -9) transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 10.5, 5.5, -9)
[node name="FixedDashthroughTarget6" parent="Targets" index="5" unique_id=437890277 instance=ExtResource("4_invhv")] [node name="FixedDashthroughTarget6" parent="Targets" index="5" unique_id=437890277 instance=ExtResource("4_invhv")]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 8, 6, -30.5) transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 8, 6, -30.5)
@@ -236,37 +236,43 @@ Target = NodePath("../../Player")
RHealth = SubResource("Resource_xy0m1") RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u") RMovement = SubResource("Resource_nwk5u")
[node name="Enemy7" parent="GroundedEnemies" index="18" unique_id=1389063523 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] [node name="Enemy27" parent="GroundedEnemies" index="18" unique_id=883912991 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 13.5, 0, 1.1631908)
Target = NodePath("../../Player")
RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u")
[node name="Enemy7" parent="GroundedEnemies" index="19" unique_id=1389063523 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 25.5, 4, -27.33681) transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 25.5, 4, -27.33681)
Target = NodePath("../../Player") Target = NodePath("../../Player")
RHealth = SubResource("Resource_xy0m1") RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u") RMovement = SubResource("Resource_nwk5u")
[node name="Enemy10" parent="GroundedEnemies" index="19" unique_id=836898496 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] [node name="Enemy10" parent="GroundedEnemies" index="20" unique_id=836898496 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 30.5, 11, -33.336807) transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 30.5, 11, -33.336807)
Target = NodePath("../../Player") Target = NodePath("../../Player")
RHealth = SubResource("Resource_xy0m1") RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u") RMovement = SubResource("Resource_nwk5u")
[node name="Enemy8" parent="GroundedEnemies" index="20" unique_id=1015624071 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] [node name="Enemy8" parent="GroundedEnemies" index="21" unique_id=1015624071 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 34.5, 1.5, -27.33681) transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 34.5, 1.5, -27.33681)
Target = NodePath("../../Player") Target = NodePath("../../Player")
RHealth = SubResource("Resource_xy0m1") RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u") RMovement = SubResource("Resource_nwk5u")
[node name="Enemy9" parent="GroundedEnemies" index="21" unique_id=827865590 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] [node name="Enemy9" parent="GroundedEnemies" index="22" unique_id=827865590 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 46.5, 0, -27.33681) transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 46.5, 0, -27.33681)
Target = NodePath("../../Player") Target = NodePath("../../Player")
RHealth = SubResource("Resource_xy0m1") RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u") RMovement = SubResource("Resource_nwk5u")
[node name="Enemy5" parent="GroundedEnemies" index="22" unique_id=1267116862 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] [node name="Enemy5" parent="GroundedEnemies" index="23" unique_id=1267116862 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 4, 0, -18.33681) transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 4, 0, -18.33681)
Target = NodePath("../../Player") Target = NodePath("../../Player")
RHealth = SubResource("Resource_xy0m1") RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u") RMovement = SubResource("Resource_nwk5u")
[node name="Enemy6" parent="GroundedEnemies" index="23" unique_id=1147823180 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] [node name="Enemy6" parent="GroundedEnemies" index="24" unique_id=1147823180 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 16.5, 7, -17.33681) transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 16.5, 7, -17.33681)
Target = NodePath("../../Player") Target = NodePath("../../Player")
RHealth = SubResource("Resource_xy0m1") RHealth = SubResource("Resource_xy0m1")

View File

@@ -34,4 +34,5 @@ func add_levels_to_container() -> void:
func _on_level_buttons_container_item_activated(index: int) -> void: func _on_level_buttons_container_item_activated(index: int) -> void:
var level_to_load = scene_lister.files.get(index) var level_to_load = scene_lister.files.get(index)
level_selected.emit()
SceneLoader.load_scene(level_to_load) SceneLoader.load_scene(level_to_load)

View File

@@ -43,7 +43,7 @@ item_0/text = "1 - ExampleLevel"
[node name="SceneLister" type="Node" parent="." unique_id=149935027] [node name="SceneLister" type="Node" parent="." unique_id=149935027]
script = ExtResource("3_stdqw") script = ExtResource("3_stdqw")
files = Array[String](["res://maps/gyms/metrics.tscn", "res://maps/zoos/grounded_flying_ennemies.tscn"]) files = Array[String](["res://maps/gyms/metrics.tscn", "res://maps/levels/tuto_enemies.tscn", "res://maps/levels/tuto_movement.tscn", "res://maps/levels/tuto_sword_parry.tscn", "res://maps/zoos/grounded_flying_ennemies.tscn"])
directory = "res://maps" directory = "res://maps"
[connection signal="item_activated" from="Control/LevelButtonsContainer" to="." method="_on_level_buttons_container_item_activated"] [connection signal="item_activated" from="Control/LevelButtonsContainer" to="." method="_on_level_buttons_container_item_activated"]

View File

@@ -397,6 +397,7 @@ text = "Start"
[node name="ContinueGameButton" type="Button" parent="MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer" index="1" unique_id=861746608] [node name="ContinueGameButton" type="Button" parent="MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer" index="1" unique_id=861746608]
unique_name_in_owner = true unique_name_in_owner = true
visible = false
layout_mode = 2 layout_mode = 2
text = "Continue" text = "Continue"

View File

@@ -26,12 +26,16 @@ func _on_player_invicible_toggled(toggled_on: bool) -> void:
func _on_restart_current_level_pressed() -> void: func _on_restart_current_level_pressed() -> void:
SceneLoader.reload_current_scene() SceneLoader.reload_current_scene()
close()
func _on_select_level_pressed() -> void: func _on_select_level_pressed() -> void:
var menu: LevelSelectMenu = level_selection_menu.instantiate() var menu: LevelSelectMenu = level_selection_menu.instantiate()
menu.level_selected.connect(_on_level_selected)
add_child(menu) add_child(menu)
func _on_level_selected() -> void:
close()
func _on_player_health_changed(value: float) -> void: func _on_player_health_changed(value: float) -> void:
player.SetPlayerHealthOverride(value) player.SetPlayerHealthOverride(value)

View File

@@ -18,7 +18,7 @@ emission_enabled = true
emission = Color(0, 0.68968636, 0.7473501, 1) emission = Color(0, 0.68968636, 0.7473501, 1)
[node name="FixedDashthroughTarget" type="AnimatableBody3D" unique_id=1291663508] [node name="FixedDashthroughTarget" type="AnimatableBody3D" unique_id=1291663508]
collision_layer = 288 collision_layer = 32
collision_mask = 0 collision_mask = 0
script = ExtResource("1_r0j7a") script = ExtResource("1_r0j7a")

View File

@@ -50,6 +50,7 @@
[ext_resource type="Texture2D" uid="uid://bnwj7ltdfximr" path="res://icon.svg" id="30_h23go"] [ext_resource type="Texture2D" uid="uid://bnwj7ltdfximr" path="res://icon.svg" id="30_h23go"]
[ext_resource type="Texture2D" uid="uid://chvt6g0xn5c2m" path="res://scenes/player_controller/components/dash/light-ring.jpg" id="32_lgpc8"] [ext_resource type="Texture2D" uid="uid://chvt6g0xn5c2m" path="res://scenes/player_controller/components/dash/light-ring.jpg" id="32_lgpc8"]
[ext_resource type="Script" uid="uid://b4dwolbvt8our" path="res://addons/godot_state_charts/history_state.gd" id="41_ruloh"] [ext_resource type="Script" uid="uid://b4dwolbvt8our" path="res://addons/godot_state_charts/history_state.gd" id="41_ruloh"]
[ext_resource type="Texture2D" uid="uid://c40orhfdgsim" path="res://assets/ui/IconGodotNode/white/icon_circle.png" id="45_u8rdp"]
[ext_resource type="PackedScene" uid="uid://cyw8p0p6a78tl" path="res://scenes/ui/healthbar/healthbar.tscn" id="47_76kmc"] [ext_resource type="PackedScene" uid="uid://cyw8p0p6a78tl" path="res://scenes/ui/healthbar/healthbar.tscn" id="47_76kmc"]
[sub_resource type="Resource" id="Resource_cb2lu"] [sub_resource type="Resource" id="Resource_cb2lu"]
@@ -105,9 +106,6 @@ radius = 1.5
[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_2q0ik"] [sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_2q0ik"]
blend_mode = 1 blend_mode = 1
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_ue7xq"]
load_path = "res://.godot/imported/fireball.svg-da8480a7a8e47ac511e0971f6fa164bd.ctex"
[node name="Player" type="CharacterBody3D" unique_id=709076448] [node name="Player" type="CharacterBody3D" unique_id=709076448]
collision_mask = 272 collision_mask = 272
script = ExtResource("1_poq2x") script = ExtResource("1_poq2x")
@@ -507,7 +505,7 @@ offset_right = 20.0
offset_bottom = 20.0 offset_bottom = 20.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
texture = SubResource("CompressedTexture2D_ue7xq") texture = ExtResource("45_u8rdp")
expand_mode = 1 expand_mode = 1
[node name="Healthbar" parent="UI" unique_id=1462180337 instance=ExtResource("47_76kmc")] [node name="Healthbar" parent="UI" unique_id=1462180337 instance=ExtResource("47_76kmc")]

View File

@@ -281,6 +281,7 @@ public partial class PlayerController : CharacterBody3D,
private float _playerHeight; private float _playerHeight;
private float _playerRadius; private float _playerRadius;
private Vector3 _dashDirection = Vector3.Zero; private Vector3 _dashDirection = Vector3.Zero;
private Vector3 _postDashThroughPosition = Vector3.Zero;
private Vector3 _preDashVelocity = Vector3.Zero; private Vector3 _preDashVelocity = Vector3.Zero;
private int _empoweredActionsLeft; private int _empoweredActionsLeft;
public int EmpoweredActionsLeft public int EmpoweredActionsLeft
@@ -1781,20 +1782,32 @@ public partial class PlayerController : CharacterBody3D,
// feet of the capsule // feet of the capsule
var correction = DashSystem.CollisionNormal == Vector3.Down ? _playerHeight : DashSystem.DashCastRadius; var correction = DashSystem.CollisionNormal == Vector3.Down ? _playerHeight : DashSystem.DashCastRadius;
var correctedLocation = DashSystem.PlannedLocation + Vector3.Down * correction; var correctedLocation = DashSystem.PlannedLocation + Vector3.Down * correction;
var travel = correctedLocation - GlobalPosition;
_dashDirection = travel.Normalized();
var shouldRebound = false;
if (DashSystem.CanDashThroughTarget && DashSystem.CollidedObject is ITargetable targetable) if (DashSystem.CanDashThroughTarget && DashSystem.CollidedObject is ITargetable targetable)
correctedLocation = ComputePositionAfterTargetedDash(targetable.GetTargetGlobalPosition(), DashSystem.CollisionPoint); {
var plannedDashLocation = targetable.GetTargetGlobalPosition() + Vector3.Down*_playerHeight/2;
travel = plannedDashLocation - GlobalPosition;
_dashDirection = travel.Normalized();
var postDashLocation = plannedDashLocation + _dashDirection;
var wallBehindQuery = PhysicsRayQueryParameters3D.Create(GlobalPosition + Vector3.Up*HeadSystem.Position.Y, postDashLocation, GroundDetector.CollisionMask);
var wallBehindResult = _spaceState.IntersectRay(wallBehindQuery);
shouldRebound = wallBehindResult.Count > 0;
correctedLocation = shouldRebound ? plannedDashLocation : postDashLocation;
}
// Start invincibility timer for the duration of the dash and a bit more afterwards // Start invincibility timer for the duration of the dash and a bit more afterwards
OnHitInvincibility(); OnHitInvincibility();
_preDashVelocity = Velocity; _preDashVelocity = Velocity;
_dashDirection = (correctedLocation - GlobalPosition).Normalized();
SetupDashDamageDetector(correctedLocation); SetupDashDamageDetector(correctedLocation);
var dashTween = CreatePositionTween(correctedLocation, AimedDashTime); var dashTween = CreatePositionTween(correctedLocation, AimedDashTime);
// dashTween.TweenMethod(Callable.From<float>(AimedDashTweenOngoing), 0.0f, 1.0f, AimedDashTime); // dashTween.TweenMethod(Callable.From<float>(AimedDashTweenOngoing), 0.0f, 1.0f, AimedDashTime);
dashTween.Finished += AimedDashTweenEnded; dashTween.Finished += AimedDashTweenEnded;
if (shouldRebound) dashTween.Finished += ManualKnockback;
_customMantle = DashSystem.ShouldMantle; _customMantle = DashSystem.ShouldMantle;
_customMantleCurve = DashSystem.MantleSystem.MantleCurve; _customMantleCurve = DashSystem.MantleSystem.MantleCurve;
@@ -2093,28 +2106,35 @@ public partial class PlayerController : CharacterBody3D,
} }
private PhysicsDirectSpaceState3D _spaceState; private PhysicsDirectSpaceState3D _spaceState;
public void StartDashAction(bool isParry) public void StartDashAction(bool isParry)
{ {
var streamName = isParry ? "parry" : "attacks"; var streamName = isParry ? "parry" : "attacks";
_audioStream!.SwitchToClipByName(streamName); _audioStream!.SwitchToClipByName(streamName);
IsInvincible = true; IsInvincible = true;
var plannedDashLocation = _targetLocation + Vector3.Down*HeadSystem.Position.Y; var plannedDashLocation = _targetLocation + Vector3.Down*_playerHeight/2;
var query = PhysicsRayQueryParameters3D.Create(HeadSystem.GlobalPosition, plannedDashLocation, DashSystem.DashCast3D.CollisionMask); // var enemySurfaceQuery = PhysicsRayQueryParameters3D.Create(HeadSystem.GlobalPosition, plannedDashLocation, DashSystem.DashCast3D.CollisionMask);
var result = _spaceState.IntersectRay(query); // var enemySurfaceResult = _spaceState.IntersectRay(enemySurfaceQuery);
if (result.Count > 0) // if (enemySurfaceResult.Count > 0)
{ // {
plannedDashLocation = (Vector3) result["position"]; // plannedDashLocation = (Vector3) enemySurfaceResult["position"];
} // }
var travel = plannedDashLocation - (GlobalPosition + Vector3.Up*_playerHeight/2);
_preDashVelocity = Velocity; _preDashVelocity = Velocity;
var travel = plannedDashLocation - GlobalPosition;
_dashDirection = travel.Normalized(); _dashDirection = travel.Normalized();
var postDashLocation = plannedDashLocation + _dashDirection;
var wallBehindQuery = PhysicsRayQueryParameters3D.Create(GlobalPosition + Vector3.Up*HeadSystem.Position.Y, postDashLocation, GroundDetector.CollisionMask);
var wallBehindResult = _spaceState.IntersectRay(wallBehindQuery);
var shouldRebound = wallBehindResult.Count > 0;
if (!shouldRebound) _postDashThroughPosition = postDashLocation;
var dashTween = CreatePositionTween(plannedDashLocation, AimedDashTime); var dashTween = CreatePositionTween(plannedDashLocation, AimedDashTime);
if (isParry) dashTween.Finished += OnDashParryEnded; if (isParry || shouldRebound) dashTween.Finished += OnDashParryEnded;
else dashTween.Finished += OnDashAttackEnded; else dashTween.Finished += OnDashAttackEnded;
} }
public void OnDashAttackStarted() public void OnDashAttackStarted()
{ {
StartDashAction(isParry: false); StartDashAction(isParry: false);
@@ -2142,13 +2162,18 @@ public partial class PlayerController : CharacterBody3D,
public void OnDashAttackEnded() public void OnDashAttackEnded()
{ {
StopDashAction(); StopDashAction();
GlobalPosition = ComputePositionAfterTargetedDash(_targetLocation, _targetHitLocation); GlobalPosition = _postDashThroughPosition;
var postDashVelocity = _preDashVelocity.Length() > PostDashSpeed ? _preDashVelocity.Length() : PostDashSpeed; var postDashVelocity = _preDashVelocity.Length() > PostDashSpeed ? _preDashVelocity.Length() : PostDashSpeed;
Velocity = _dashDirection * postDashVelocity; Velocity = _dashDirection * postDashVelocity;
} }
public void OnDashParryEnded() public void OnDashParryEnded()
{ {
StopDashAction(); StopDashAction();
ManualKnockback();
}
public void ManualKnockback()
{
Velocity = -_dashDirection*RKnockback.Modifier; Velocity = -_dashDirection*RKnockback.Modifier;
} }