diff --git a/maps/levels/tuto_sword_parry.tscn b/maps/levels/tuto_sword_parry.tscn index 7788dda5..47b3e392 100644 --- a/maps/levels/tuto_sword_parry.tscn +++ b/maps/levels/tuto_sword_parry.tscn @@ -22,258 +22,284 @@ metadata/_custom_type_script = "uid://baiapod3csndf" [node name="Main" unique_id=955321579 instance=ExtResource("1_8n6bu")] [node name="Player" parent="." index="6" unique_id=1309399929] -transform = Transform3D(0.99999994, 0, 0, 0, 1, 0, 0, 0, 0.99999994, 3, 0, -1.5) +transform = Transform3D(0.99999994, 0, 0, 0, 1, 0, 0, 0, 0.99999994, 0.5, 0, 0) -[node name="PlaytestArena" parent="." index="7" unique_id=664535670 instance=ExtResource("2_wsc2c")] +[node name="Playground" type="Node3D" parent="." index="7" unique_id=2099606598] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 57.5, 0, 0) -[node name="CSGBox3D108" type="CSGBox3D" parent="PlaytestArena" index="88" unique_id=47922109] +[node name="PlaytestArena" parent="Playground" index="0" unique_id=664535670 instance=ExtResource("2_wsc2c")] + +[node name="CSGBox3D108" type="CSGBox3D" parent="Playground/PlaytestArena" index="88" unique_id=47922109] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 8.75, 2.25) use_collision = true size = Vector3(1, 17.5, 9.5) material = ExtResource("3_wsc2c") -[node name="Targets" type="Node3D" parent="." index="8" unique_id=1727473773] +[node name="Targets" type="Node3D" parent="Playground" index="1" unique_id=1727473773] -[node name="FixedDashthroughTarget" parent="Targets" index="0" unique_id=1291663508 instance=ExtResource("4_invhv")] +[node name="FixedDashthroughTarget" parent="Playground/Targets" index="0" unique_id=1291663508 instance=ExtResource("4_invhv")] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 17, 13.5, -9) -[node name="FixedDashthroughTarget8" parent="Targets" index="1" unique_id=475406577 instance=ExtResource("4_invhv")] +[node name="FixedDashthroughTarget8" parent="Playground/Targets" index="1" unique_id=475406577 instance=ExtResource("4_invhv")] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 17, 23, -34) -[node name="FixedDashthroughTarget9" parent="Targets" index="2" unique_id=168635463 instance=ExtResource("4_invhv")] +[node name="FixedDashthroughTarget9" parent="Playground/Targets" index="2" unique_id=168635463 instance=ExtResource("4_invhv")] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 35.5, 30.5, -42.5) -[node name="FixedDashthroughTarget10" parent="Targets" index="3" unique_id=119396227 instance=ExtResource("4_invhv")] +[node name="FixedDashthroughTarget10" parent="Playground/Targets" index="3" unique_id=119396227 instance=ExtResource("4_invhv")] 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="Playground/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, 5.5, -9) -[node name="FixedDashthroughTarget6" parent="Targets" index="5" unique_id=437890277 instance=ExtResource("4_invhv")] +[node name="FixedDashthroughTarget6" parent="Playground/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) -[node name="FixedDashthroughTarget4" parent="Targets" index="6" unique_id=1484691271 instance=ExtResource("4_invhv")] +[node name="FixedDashthroughTarget4" parent="Playground/Targets" index="6" unique_id=1484691271 instance=ExtResource("4_invhv")] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 30.5, 5, -33.5) -[node name="FixedDashthroughTarget5" parent="Targets" index="7" unique_id=434257222 instance=ExtResource("4_invhv")] +[node name="FixedDashthroughTarget5" parent="Playground/Targets" index="7" unique_id=434257222 instance=ExtResource("4_invhv")] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 26.5, 9.5, -44) -[node name="FixedDashthroughTarget2" parent="Targets" index="8" unique_id=272400108 instance=ExtResource("4_invhv")] +[node name="FixedDashthroughTarget2" parent="Playground/Targets" index="8" unique_id=272400108 instance=ExtResource("4_invhv")] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 27, 13.5, -9) -[node name="FixedDashthroughTarget3" parent="Targets" index="9" unique_id=1008201593 instance=ExtResource("4_invhv")] +[node name="FixedDashthroughTarget3" parent="Playground/Targets" index="9" unique_id=1008201593 instance=ExtResource("4_invhv")] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 43, 6, -8.5) -[node name="FlyingEnemies" type="Node3D" parent="." index="9" unique_id=1518759273] +[node name="FlyingEnemies" type="Node3D" parent="Playground" index="2" unique_id=1518759273] -[node name="FlyingEnemy" parent="FlyingEnemies" index="0" unique_id=2090203407 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")] +[node name="FlyingEnemy" parent="Playground/FlyingEnemies" index="0" unique_id=2090203407 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.5, 7, -9) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RMovement = SubResource("Resource_nwk5u") -[node name="FlyingEnemy10" parent="FlyingEnemies" index="1" unique_id=1610354388 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")] +[node name="FlyingEnemy10" parent="Playground/FlyingEnemies" index="1" unique_id=1610354388 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 32.5, 7, 0.5) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RMovement = SubResource("Resource_nwk5u") -[node name="FlyingEnemy11" parent="FlyingEnemies" index="2" unique_id=1671862122 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")] +[node name="FlyingEnemy11" parent="Playground/FlyingEnemies" index="2" unique_id=1671862122 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 7, 1.5) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RMovement = SubResource("Resource_nwk5u") -[node name="FlyingEnemy4" parent="FlyingEnemies" index="3" unique_id=665537400 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")] +[node name="FlyingEnemy4" parent="Playground/FlyingEnemies" index="3" unique_id=665537400 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 33, 6, -12) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RMovement = SubResource("Resource_nwk5u") -[node name="FlyingEnemy5" parent="FlyingEnemies" index="4" unique_id=1592183094 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")] +[node name="FlyingEnemy5" parent="Playground/FlyingEnemies" index="4" unique_id=1592183094 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 45, 6, -12) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RMovement = SubResource("Resource_nwk5u") -[node name="FlyingEnemy9" parent="FlyingEnemies" index="5" unique_id=842890582 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")] +[node name="FlyingEnemy9" parent="Playground/FlyingEnemies" index="5" unique_id=842890582 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 45, 6, -1.5) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RMovement = SubResource("Resource_nwk5u") -[node name="FlyingEnemy2" parent="FlyingEnemies" index="6" unique_id=188061312 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")] +[node name="FlyingEnemy2" parent="Playground/FlyingEnemies" index="6" unique_id=188061312 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.5, 11, -24) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RMovement = SubResource("Resource_nwk5u") -[node name="FlyingEnemy12" parent="FlyingEnemies" index="7" unique_id=821624940 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")] +[node name="FlyingEnemy12" parent="Playground/FlyingEnemies" index="7" unique_id=821624940 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 8.5, -24) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RMovement = SubResource("Resource_nwk5u") -[node name="FlyingEnemy3" parent="FlyingEnemies" index="8" unique_id=412581083 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")] +[node name="FlyingEnemy3" parent="Playground/FlyingEnemies" index="8" unique_id=412581083 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 14, -32.5) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RMovement = SubResource("Resource_nwk5u") -[node name="FlyingEnemy6" parent="FlyingEnemies" index="9" unique_id=779578466 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")] +[node name="FlyingEnemy6" parent="Playground/FlyingEnemies" index="9" unique_id=779578466 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 23.5, -23) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RMovement = SubResource("Resource_nwk5u") -[node name="FlyingEnemy7" parent="FlyingEnemies" index="10" unique_id=1163439326 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")] +[node name="FlyingEnemy7" parent="Playground/FlyingEnemies" index="10" unique_id=1163439326 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 34, 23.5, -23) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RMovement = SubResource("Resource_nwk5u") -[node name="FlyingEnemy8" parent="FlyingEnemies" index="11" unique_id=1979706254 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")] +[node name="FlyingEnemy8" parent="Playground/FlyingEnemies" index="11" unique_id=1979706254 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 43, 23.5, -23) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RMovement = SubResource("Resource_nwk5u") -[node name="GroundedEnemies" type="Node3D" parent="." index="10" unique_id=1101330520] +[node name="GroundedEnemies" type="Node3D" parent="Playground" index="3" unique_id=1101330520] -[node name="Enemy3" parent="GroundedEnemies" index="0" unique_id=1159989424 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] +[node name="Enemy3" parent="Playground/GroundedEnemies" index="0" unique_id=1159989424 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 25, 0, -8.336809) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RHealth = SubResource("Resource_xy0m1") RMovement = SubResource("Resource_nwk5u") -[node name="Enemy11" parent="GroundedEnemies" index="1" unique_id=1747444936 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] +[node name="Enemy11" parent="Playground/GroundedEnemies" index="1" unique_id=1747444936 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 17, 8, 3.6631908) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RHealth = SubResource("Resource_xy0m1") RMovement = SubResource("Resource_nwk5u") -[node name="Enemy12" parent="GroundedEnemies" index="2" unique_id=283117081 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] +[node name="Enemy12" parent="Playground/GroundedEnemies" index="2" unique_id=283117081 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 36.5, 11, -4.836809) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RHealth = SubResource("Resource_xy0m1") RMovement = SubResource("Resource_nwk5u") -[node name="Enemy13" parent="GroundedEnemies" index="3" unique_id=970022638 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] +[node name="Enemy13" parent="Playground/GroundedEnemies" index="3" unique_id=970022638 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 36.5, 12, -19.33681) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RHealth = SubResource("Resource_xy0m1") RMovement = SubResource("Resource_nwk5u") -[node name="Enemy18" parent="GroundedEnemies" index="4" unique_id=2077088475 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] +[node name="Enemy18" parent="Playground/GroundedEnemies" index="4" unique_id=2077088475 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, 12, -19.33681) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RHealth = SubResource("Resource_xy0m1") RMovement = SubResource("Resource_nwk5u") -[node name="Enemy19" parent="GroundedEnemies" index="5" unique_id=2023773341 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] +[node name="Enemy19" parent="Playground/GroundedEnemies" index="5" unique_id=2023773341 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 36.5, 7.5, -19.33681) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RHealth = SubResource("Resource_xy0m1") RMovement = SubResource("Resource_nwk5u") -[node name="Enemy25" parent="GroundedEnemies" index="6" unique_id=1101329723 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] +[node name="Enemy25" parent="Playground/GroundedEnemies" index="6" unique_id=1101329723 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 46, 7.5, -19.33681) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RHealth = SubResource("Resource_xy0m1") RMovement = SubResource("Resource_nwk5u") -[node name="Enemy26" parent="GroundedEnemies" index="7" unique_id=855220553 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] +[node name="Enemy26" parent="Playground/GroundedEnemies" index="7" unique_id=855220553 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 46, 12, -35.336807) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RHealth = SubResource("Resource_xy0m1") RMovement = SubResource("Resource_nwk5u") -[node name="Enemy20" parent="GroundedEnemies" index="8" unique_id=1255215986 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] +[node name="Enemy20" parent="Playground/GroundedEnemies" index="8" unique_id=1255215986 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, 7.5, -19.33681) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RHealth = SubResource("Resource_xy0m1") RMovement = SubResource("Resource_nwk5u") -[node name="Enemy21" parent="GroundedEnemies" index="9" unique_id=2098915426 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] +[node name="Enemy21" parent="Playground/GroundedEnemies" index="9" unique_id=2098915426 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 36.5, 0.5, -19.33681) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RHealth = SubResource("Resource_xy0m1") RMovement = SubResource("Resource_nwk5u") -[node name="Enemy22" parent="GroundedEnemies" index="10" unique_id=246912749 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] +[node name="Enemy22" parent="Playground/GroundedEnemies" index="10" unique_id=246912749 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, 0.5, -19.33681) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RHealth = SubResource("Resource_xy0m1") RMovement = SubResource("Resource_nwk5u") -[node name="Enemy14" parent="GroundedEnemies" index="11" unique_id=211015190 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] +[node name="Enemy14" parent="Playground/GroundedEnemies" index="11" unique_id=211015190 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 41, 17.5, -33.336807) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RHealth = SubResource("Resource_xy0m1") RMovement = SubResource("Resource_nwk5u") -[node name="Enemy15" parent="GroundedEnemies" index="12" unique_id=1164179421 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] +[node name="Enemy15" parent="Playground/GroundedEnemies" index="12" unique_id=1164179421 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 31, 17.5, -33.336807) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RHealth = SubResource("Resource_xy0m1") RMovement = SubResource("Resource_nwk5u") -[node name="Enemy16" parent="GroundedEnemies" index="13" unique_id=1169725422 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] +[node name="Enemy16" parent="Playground/GroundedEnemies" index="13" unique_id=1169725422 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 24.5, 17.5, -33.336807) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RHealth = SubResource("Resource_xy0m1") RMovement = SubResource("Resource_nwk5u") -[node name="Enemy17" parent="GroundedEnemies" index="14" unique_id=1951666189 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] +[node name="Enemy17" parent="Playground/GroundedEnemies" index="14" unique_id=1951666189 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 17.5, 17.5, -22.836807) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RHealth = SubResource("Resource_xy0m1") RMovement = SubResource("Resource_nwk5u") -[node name="Enemy23" parent="GroundedEnemies" index="15" unique_id=1348057502 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] +[node name="Enemy23" parent="Playground/GroundedEnemies" index="15" unique_id=1348057502 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 17.5, 24.5, -43.336807) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RHealth = SubResource("Resource_xy0m1") RMovement = SubResource("Resource_nwk5u") -[node name="Enemy24" parent="GroundedEnemies" index="16" unique_id=2068813971 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] +[node name="Enemy24" parent="Playground/GroundedEnemies" index="16" unique_id=2068813971 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 45, 24.5, -43.336807) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RHealth = SubResource("Resource_xy0m1") RMovement = SubResource("Resource_nwk5u") -[node name="Enemy4" parent="GroundedEnemies" index="17" unique_id=366059658 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] +[node name="Enemy4" parent="Playground/GroundedEnemies" index="17" unique_id=366059658 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 10.5, 0, -18.33681) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RHealth = SubResource("Resource_xy0m1") RMovement = SubResource("Resource_nwk5u") -[node name="Enemy27" parent="GroundedEnemies" index="18" unique_id=883912991 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] +[node name="Enemy27" parent="Playground/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") +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")] +[node name="Enemy7" parent="Playground/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) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RHealth = SubResource("Resource_xy0m1") RMovement = SubResource("Resource_nwk5u") -[node name="Enemy10" parent="GroundedEnemies" index="20" unique_id=836898496 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] +[node name="Enemy10" parent="Playground/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) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RHealth = SubResource("Resource_xy0m1") RMovement = SubResource("Resource_nwk5u") -[node name="Enemy8" parent="GroundedEnemies" index="21" unique_id=1015624071 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] +[node name="Enemy8" parent="Playground/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) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RHealth = SubResource("Resource_xy0m1") RMovement = SubResource("Resource_nwk5u") -[node name="Enemy9" parent="GroundedEnemies" index="22" unique_id=827865590 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] +[node name="Enemy9" parent="Playground/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) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RHealth = SubResource("Resource_xy0m1") RMovement = SubResource("Resource_nwk5u") -[node name="Enemy5" parent="GroundedEnemies" index="23" unique_id=1267116862 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] +[node name="Enemy5" parent="Playground/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) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RHealth = SubResource("Resource_xy0m1") RMovement = SubResource("Resource_nwk5u") -[node name="Enemy6" parent="GroundedEnemies" index="24" unique_id=1147823180 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")] +[node name="Enemy6" parent="Playground/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) -Target = NodePath("../../Player") +Target = NodePath("../../../Player") RHealth = SubResource("Resource_xy0m1") RMovement = SubResource("Resource_nwk5u") + +[node name="Tutorial" type="CSGCombiner3D" parent="." index="8" unique_id=1168290062] +use_collision = true +collision_layer = 256 +collision_mask = 65553 + +[node name="CSGBox3D109" type="CSGBox3D" parent="Tutorial" index="0" unique_id=531736596] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -4.75, -2.25) +use_collision = true +size = Vector3(19.5, 8.5, 14) +material = ExtResource("3_wsc2c") + +[node name="CSGBox3D110" type="CSGBox3D" parent="Tutorial" index="1" unique_id=731833071] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4.5, -29.25) +use_collision = true +size = Vector3(19.5, 27, 14) +material = ExtResource("3_wsc2c") + +[node name="CSGBox3D111" type="CSGBox3D" parent="Tutorial" index="2" unique_id=923535141] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -21.75, -18.75) +use_collision = true +size = Vector3(19.5, 25.5, 35) +material = ExtResource("3_wsc2c") diff --git a/scenes/player_controller/PlayerController.tscn b/scenes/player_controller/PlayerController.tscn index fb526dc7..d904c04c 100644 --- a/scenes/player_controller/PlayerController.tscn +++ b/scenes/player_controller/PlayerController.tscn @@ -134,7 +134,7 @@ SimpleJumpHangTimeInFrames = 1 SimpleJumpGravityLesseningFactor = 2.0 DoubleJumpHangTimeInFrames = 3 DoubleJumpGravityLesseningFactor = 1.5 -WallJumpStartVelocity = 8.0 +WallJumpStartVelocity = 12.0 MaxNumberOfEmpoweredActions = 3 SimpleDashStrength = 18.0 SimpleDashTime = 0.2 @@ -155,7 +155,9 @@ WallHugGravityLesseningFactor = 15.0 WallHugDownwardMaxSpeed = 4.0 WallHugHorizontalDeceleration = 1.0 WallRunUpwardVelocityFactor = 0.5 -MinimumWallRunUpwardVelocity = 3.0 +MinimumWallRunUpwardSpeed = 4.0 +WallRunAltitudeLossSpeed = 8.0 +WallRunSpeedThreshold = 7.0 [node name="CHealth" parent="." unique_id=1244478698 instance=ExtResource("3_q7bng")] RHealth = ExtResource("4_m8gvy") @@ -391,7 +393,6 @@ wait_time = 0.8 one_shot = true [node name="AirborneDashCooldown" type="Timer" parent="." unique_id=976335884] -wait_time = 0.5 one_shot = true [node name="PowerCooldown" type="Timer" parent="." unique_id=1091679675] @@ -408,7 +409,6 @@ offset_left = 1524.0 offset_top = 1.0 offset_right = -8.0 offset_bottom = 1.0 -enabled = false initial_node_to_watch = NodePath("../StateChart") [node name="UI" type="Control" parent="." unique_id=856532641] diff --git a/scenes/player_controller/scripts/PlayerController.cs b/scenes/player_controller/scripts/PlayerController.cs index adef4eb4..34ccd536 100644 --- a/scenes/player_controller/scripts/PlayerController.cs +++ b/scenes/player_controller/scripts/PlayerController.cs @@ -240,10 +240,11 @@ public partial class PlayerController : CharacterBody3D, [Export(PropertyHint.Range, "0,2,0.01,or_greater")] public float WallRunUpwardVelocityFactor { get; set; } = 0.05f; [Export(PropertyHint.Range, "0,10,0.1,or_greater")] - public float MinimumWallRunUpwardVelocity { get; set; } = 2f; + public float MinimumWallRunUpwardSpeed { get; set; } = 2f; + [Export(PropertyHint.Range, "0,30,0.1,or_greater")] + public float MinimumWallRunHorizontalSpeed { get; set; } = 12f; [Export(PropertyHint.Range, "1,20,0.1,or_greater")] public float WallRunAltitudeLossSpeed { get; set; } = 10f; - [Export(PropertyHint.Range, "1,20,0.1,or_greater")] public float WallRunSpeedThreshold { get; set; } = 8f; @@ -617,6 +618,7 @@ public partial class PlayerController : CharacterBody3D, _onWall.StateExited += OnWallStopped; _onWallHugging.StatePhysicsProcessing += HandleWallHugging; _onWallHanging.StatePhysicsProcessing += HandleWallHanging; + _onWallRunning.StateEntered += OnWallRunStarted; _onWallRunning.StatePhysicsProcessing += HandleWallRunning; _onWallHanging.StateExited += RecoverWeapon; @@ -725,6 +727,9 @@ public partial class PlayerController : CharacterBody3D, _bufferedAction = BufferedActions.None; return; } + + _canDash = true; + _canDashAirborne = true; _playerState.SendEvent("dash"); } @@ -733,16 +738,18 @@ public partial class PlayerController : CharacterBody3D, _currentInputBufferFrames = 0; _playerState.SendEvent("jump"); } - if (_bufferedAction == BufferedActions.Dash && _currentInputBufferFrames > 0) - { - if (GetMoveInput().Length() < Mathf.Epsilon) - { - _bufferedAction = BufferedActions.None; - return; - } - _currentInputBufferFrames = 0; - _playerState.SendEvent("dash"); - } + // if (_bufferedAction == BufferedActions.Dash && _currentInputBufferFrames > 0) + // { + // if (GetMoveInput().Length() < Mathf.Epsilon) + // { + // _bufferedAction = BufferedActions.None; + // return; + // } + // // _canDash = true; + // // _canDashAirborne = true; + // _currentInputBufferFrames = 0; + // _playerState.SendEvent("dash"); + // } } public void OnAirborneToGrounded() @@ -866,7 +873,6 @@ public partial class PlayerController : CharacterBody3D, // Should we start a wall run if (ShouldStartWallRun()) { - SetVerticalVelocity(GetWallRunStartVerticalVelocity()); _playerState.SendEvent("wall_run"); return; } @@ -1100,8 +1106,14 @@ public partial class PlayerController : CharacterBody3D, if (!_canDashAirborne) return; _canDashAirborne = false; + _airborneDashCooldownTimer.Start(); + _playerState.SendEvent("dash"); + return; } - + + if (!_canDash) return; + _canDash = false; + _simpleDashCooldownTimer.Start(); _playerState.SendEvent("dash"); } public void SimpleDashInDirection(Vector3 direction, float strength = -1) @@ -1126,13 +1138,13 @@ public partial class PlayerController : CharacterBody3D, return; } - if (!_canDash) - { - var dashEvent = isOnFloorCustom() ? "grounded" : "dash_finished"; - _playerState.SendEvent(dashEvent); - return; - } - _canDash = false; + // if (!_canDash) + // { + // var dashEvent = isOnFloorCustom() ? "grounded" : "dash_finished"; + // _playerState.SendEvent(dashEvent); + // return; + // } + // _canDash = false; SimpleDash(); _bufferedAction = BufferedActions.None; } @@ -1175,6 +1187,11 @@ public partial class PlayerController : CharacterBody3D, } public void OnWallStarted() { + if (_simpleDashCooldownTimer.IsStopped()) + _canDash = true; + else + _simpleDashCooldownTimer.Start(); + if (!WallHugSystem.IsWallHugging()) return; @@ -1192,14 +1209,12 @@ public partial class PlayerController : CharacterBody3D, } public void HandleWallHugging(float delta) { - _canDash = true; - _canDashAirborne = true; + // _canDash = true; + // _canDashAirborne = true; WallHug(delta); if (ShouldStartWallRun()) { - var verticalVelocity = GetWallRunStartVerticalVelocity(); - SetVerticalVelocity(verticalVelocity); _playerState.SendEvent("wall_run"); return; } @@ -1212,6 +1227,17 @@ public partial class PlayerController : CharacterBody3D, { WallHang(delta); } + + public void OnWallRunStarted() + { + // Find horizontal velocity projected on the current wall + var hvel = new Vector3(Velocity.X, 0, Velocity.Z); + var hvelProjected = hvel.Slide(_wallHugStartNormal); + var hSpeed = Mathf.Max(hvel.Length(), MinimumWallRunHorizontalSpeed); + // Reorient horizontal velocity so we keep it coplanar with the wall without losing speed + var finalHVel = hvelProjected.Normalized() * hSpeed; + Velocity = finalHVel + Vector3.Up*GetWallRunStartVerticalVelocity(); + } public void HandleWallRunning(float delta) { // _canDash = false; @@ -1243,7 +1269,7 @@ public partial class PlayerController : CharacterBody3D, { var hvel = new Vector3(Velocity.X, 0, Velocity.Z); var hvelProjected = hvel.Slide(_wallHugStartNormal); - return Mathf.Max(hvelProjected.Length() * WallRunUpwardVelocityFactor, MinimumWallRunUpwardVelocity); + return Mathf.Max(hvelProjected.Length() * WallRunUpwardVelocityFactor, MinimumWallRunUpwardSpeed); } public bool ShouldStartWallRun() @@ -1256,7 +1282,7 @@ public partial class PlayerController : CharacterBody3D, var isCoplanarEnough = Velocity.AngleTo(wallNormal) > Math.PI/4 && Velocity.AngleTo(wallNormal) < 3*Math.PI/4; var isGoingDownwards = Velocity.AngleTo(Vector3.Down) < Math.PI/4; var isLookingInDirectionOfRun = hvelProjected.AngleTo(-HeadSystem.GetForwardHorizontalVector()) < Math.PI/2; - var shouldStart = haveEnoughSpeed && isCoplanarEnough && !isGoingDownwards && isIndeedWall && isLookingInDirectionOfRun; + var shouldStart = haveEnoughSpeed && !isGoingDownwards && isIndeedWall && isCoplanarEnough && isLookingInDirectionOfRun; var debugText = "--------------\n"; debugText += shouldStart ? "WALL RUN STARTED\n" : "NO WALL RUN\n"; @@ -1371,12 +1397,11 @@ public partial class PlayerController : CharacterBody3D, { if (IsTryingToMantle()) _playerState.SendEvent("mantle"); - // if (ShouldStartWallRun() && Velocity.Y < WallRunUpwardVelocity) - // { - // SetVerticalVelocity(WallRunUpwardVelocity); - // _playerState.SendEvent("wall_run"); - // return; - // } + if (ShouldStartWallRun() && !_isJumpInputPressed) + { + _playerState.SendEvent("wall_run"); + return; + } // Update horizontal velocity var horizontalVelocity = ComputeHVelocityAir(delta); @@ -1434,8 +1459,9 @@ public partial class PlayerController : CharacterBody3D, { ComputeJumpFromWallHSpeed(WallJumpStartVelocity); } + // Remove the ability to dash straight away so you cannot scale up the wall - _canDashAirborne = false; + // _canDashAirborne = false; _airborneDashCooldownTimer.Start(); _isWallJumpAvailable = false; } @@ -1768,6 +1794,7 @@ public partial class PlayerController : CharacterBody3D, public void PerformEmpoweredAction() { _isWallJumpAvailable = true; + _canDashAirborne = true; EmpoweredActionsLeft--; _playerState.SendEvent(EmpoweredActionsLeft <= 0 ? "expired" : "power_used"); }