Compare commits

..

3 Commits

Author SHA1 Message Date
fa0e511b3a removed ability to scale up wall by mashing dash and jump buttons
Some checks failed
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) Failing after 2m44s
Create tag and build when new code gets to main / Export (push) Successful in 8m44s
2026-02-09 17:58:13 +01:00
3efbd41f56 aim assist in inputs
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 30s
Create tag and build when new code gets to main / Test (push) Successful in 9m0s
Create tag and build when new code gets to main / Export (push) Successful in 10m24s
2026-02-09 11:20:57 +01:00
3148d3b69b basic aim assist system
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 19s
Create tag and build when new code gets to main / Test (push) Successful in 7m42s
Create tag and build when new code gets to main / Export (push) Successful in 10m3s
2026-02-08 20:34:54 +01:00
10 changed files with 289 additions and 128 deletions

View File

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

View File

@@ -93,7 +93,22 @@ text = "FOV change with speed :"
step = 0.1
tick_count = 10
[node name="Aim assist" parent="VBoxContainer/MarginContainer/VBoxContainer" unique_id=1782285745 instance=ExtResource("2_iyvrj")]
layout_mode = 2
option_name = "Aim assist"
option_section = 1
key = "AimAssist"
section = "InputSettings"
[node name="OptionLabel" parent="VBoxContainer/MarginContainer/VBoxContainer/Aim assist" index="0" unique_id=1789907427]
text = "Aim assist :"
[node name="HSlider" parent="VBoxContainer/MarginContainer/VBoxContainer/Aim assist" index="1" unique_id=494926010]
max_value = 2.0
step = 0.1
[editable path="VBoxContainer/MarginContainer/VBoxContainer/LookSensitivityControl"]
[editable path="VBoxContainer/MarginContainer/VBoxContainer/MouseSensitivityControl"]
[editable path="VBoxContainer/MarginContainer/VBoxContainer/HeadBobbingControl"]
[editable path="VBoxContainer/MarginContainer/VBoxContainer/FOVChangeControl"]
[editable path="VBoxContainer/MarginContainer/VBoxContainer/Aim assist"]

View File

@@ -162,6 +162,7 @@ locale/translations=PackedStringArray("res://addons/maaacks_game_template/base/t
3d_physics/layer_4="4"
3d_physics/layer_5="enemies"
3d_physics/layer_6="InteractiveGeo"
3d_physics/layer_7="Aim Assist"
3d_physics/layer_9="terrain"
3d_physics/layer_17="weapon"

View File

@@ -47,6 +47,9 @@ albedo_color = Color(0.06469653, 0.06469653, 0.06469653, 1)
[sub_resource type="BoxShape3D" id="BoxShape3D_4yfjf"]
[sub_resource type="SphereShape3D" id="SphereShape3D_ykkxn"]
radius = 2.0
[node name="FlyingEnemy" type="CharacterBody3D" unique_id=2090203407]
collision_layer = 16
collision_mask = 273
@@ -116,3 +119,10 @@ monitorable = false
[node name="CollisionShape3D" type="CollisionShape3D" parent="DamageBox" unique_id=68664931]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.5)
shape = SubResource("BoxShape3D_4yfjf")
[node name="AimAssistTarget" type="Area3D" parent="." unique_id=178575959]
collision_layer = 64
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="AimAssistTarget" unique_id=843739364]
shape = SubResource("SphereShape3D_ykkxn")

View File

@@ -48,6 +48,9 @@ albedo_color = Color(0.06469653, 0.06469653, 0.06469653, 1)
[sub_resource type="BoxShape3D" id="BoxShape3D_4yfjf"]
size = Vector3(1, 2, 1.5)
[sub_resource type="SphereShape3D" id="SphereShape3D_k2cew"]
radius = 2.0
[node name="GroundedEnemy" type="CharacterBody3D" unique_id=1747444936]
collision_layer = 16
collision_mask = 273
@@ -120,3 +123,11 @@ monitorable = false
[node name="CollisionShape3D" type="CollisionShape3D" parent="DamageBox" unique_id=978720734]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, -0.25)
shape = SubResource("BoxShape3D_4yfjf")
[node name="AimAssistTarget" type="Area3D" parent="." unique_id=328174571]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
collision_layer = 64
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="AimAssistTarget" unique_id=1960476920]
shape = SubResource("SphereShape3D_k2cew")

View File

@@ -17,6 +17,9 @@ roughness = 0.1
emission_enabled = true
emission = Color(0, 0.68968636, 0.7473501, 1)
[sub_resource type="SphereShape3D" id="SphereShape3D_gxutf"]
radius = 2.5
[node name="FixedDashthroughTarget" type="AnimatableBody3D" unique_id=1291663508]
collision_layer = 32
collision_mask = 0
@@ -28,3 +31,10 @@ shape = SubResource("SphereShape3D_nkm8n")
[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=1965985422]
mesh = SubResource("SphereMesh_r0j7a")
surface_material_override/0 = SubResource("StandardMaterial3D_kgb3i")
[node name="AimAssistTarget" type="Area3D" parent="." unique_id=1141164558]
collision_layer = 64
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="AimAssistTarget" unique_id=784189005]
shape = SubResource("SphereShape3D_gxutf")

View File

@@ -109,6 +109,9 @@ blend_mode = 1
[node name="Player" type="CharacterBody3D" unique_id=709076448]
collision_mask = 272
script = ExtResource("1_poq2x")
AimAssistStrength = 0.3
AimAssistReductionWhenCloseToTarget = 0.1
AimAssistReductionStartDistance = 8.0
RDamage = SubResource("Resource_cb2lu")
RKnockback = SubResource("Resource_abfq8")
RHealth = SubResource("Resource_ue7xq")
@@ -131,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
@@ -152,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")
@@ -345,6 +350,12 @@ shape = SubResource("SphereShape3D_cmijs")
target_position = Vector3(0, 0, -5)
collision_mask = 48
[node name="AimAssistRayCast" type="RayCast3D" parent="." unique_id=995133571]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.6, 0)
target_position = Vector3(0, 0, -6)
collision_mask = 112
collide_with_areas = true
[node name="GroundDetector" type="ShapeCast3D" parent="." unique_id=1681055424]
shape = SubResource("CapsuleShape3D_6lejt")
collision_mask = 256
@@ -382,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]
@@ -399,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]

View File

@@ -361,6 +361,11 @@ public partial class HeadSystem : Node3D
return GetGlobalTransform().Basis.Z;
}
public Vector3 GetGlobalForwardVector()
{
return _camera.GlobalBasis.Z;
}
public Vector3 GetGlobalLookRotation()
{
return new Vector3(

View File

@@ -59,6 +59,7 @@ transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0,
mesh = ExtResource("3_svc06")
[node name="WeaponLocationIndicator" type="MeshInstance3D" parent="." unique_id=406396593]
visible = false
mesh = SubResource("SphereMesh_jpdh0")
[node name="StateChart" type="Node" parent="." unique_id=1135887603]

View File

@@ -81,6 +81,14 @@ public partial class PlayerController : CharacterBody3D,
// Combat stuff
[ExportCategory("Combat")]
[ExportGroup("General")]
[Export(PropertyHint.Range, "0,1f,0.01,or_greater")]
public float AimAssistStrength { get; set; } = 0.1f;
[Export(PropertyHint.Range, "0,1f,0.1,or_greater")]
public float AimAssistReductionWhenCloseToTarget { get; set; } = 0.3f;
[Export(PropertyHint.Range, "0,10f,0.1,or_greater")]
public float AimAssistReductionStartDistance { get; set; } = 10f;
[ExportGroup("Damage")]
[Export] public RDamage RDamage { get; set; }
[Export] public RKnockback RKnockback { get; set; }
@@ -232,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;
@@ -304,6 +313,7 @@ public partial class PlayerController : CharacterBody3D,
private float _mouseSensitivityMultiplier = 1.0f;
private float _headBobbingMultiplier = 1.0f;
private float _fovChangeMultiplier = 1.0f;
private float _aimAssistMultiplier = 1.0f;
// Timers
private Timer _timeScaleAimInAirTimer;
@@ -372,6 +382,7 @@ public partial class PlayerController : CharacterBody3D,
private readonly List<IDamageable> _hitEnemies = new List<IDamageable>();
private ShapeCast3D _closeEnemyDetector;
private RayCast3D _aimAssisRayCast;
private Camera3D _camera;
public override void _Ready()
@@ -386,6 +397,8 @@ public partial class PlayerController : CharacterBody3D,
PlayerUi = GetNode<PlayerUi>("UI");
_closeEnemyDetector = GetNode<ShapeCast3D>("%CloseEnemyDetector");
_closeEnemyDetector.TargetPosition = _closeEnemyDetector.TargetPosition.Normalized() * TargetingDistance;
_aimAssisRayCast = GetNode<RayCast3D>("AimAssistRayCast");
_aimAssisRayCast.TargetPosition = _aimAssisRayCast.TargetPosition.Normalized() * (TargetingDistance*1.5f);
// DashIndicator = GetNode<TextureRect>("%DashIndicator");
PowerCooldownIndicator = GetNode<ColorRect>("%DashCooldownIndicator");
@@ -605,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;
@@ -657,6 +671,7 @@ public partial class PlayerController : CharacterBody3D,
_mouseSensitivityMultiplier = (float) config.GetValue("InputSettings", "MouseSensitivity", 1.0f);
_headBobbingMultiplier = (float) config.GetValue("InputSettings", "HeadBobbingWhileWalking", 1.0f);
_fovChangeMultiplier = (float) config.GetValue("InputSettings", "FovChangeWithSpeed", 1.0f);
_aimAssistMultiplier = (float) config.GetValue("InputSettings", "AimAssist", 1.0f);
}
public void OnTutorialDone(Node3D _)
{
@@ -712,6 +727,9 @@ public partial class PlayerController : CharacterBody3D,
_bufferedAction = BufferedActions.None;
return;
}
_canDash = true;
_canDashAirborne = true;
_playerState.SendEvent("dash");
}
@@ -720,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()
@@ -853,7 +873,6 @@ public partial class PlayerController : CharacterBody3D,
// Should we start a wall run
if (ShouldStartWallRun())
{
SetVerticalVelocity(GetWallRunStartVerticalVelocity());
_playerState.SendEvent("wall_run");
return;
}
@@ -939,6 +958,31 @@ public partial class PlayerController : CharacterBody3D,
public float CalculateGravityForce() => _gravity * Weight;
// Camera stuff
private Vector2 ComputeAimAssist()
{
_aimAssisRayCast.SetRotation(HeadSystem.GetGlobalLookRotation());
if (!_aimAssisRayCast.IsColliding()) return Vector2.Zero;
// Hard dependency on the aim assist to be an Area3D and having a parent
var collidedObject = _aimAssisRayCast.GetCollider() as Area3D;
if (collidedObject is null) return Vector2.Zero;
if (collidedObject.GetParent() is not ITargetable targetable) return Vector2.Zero;
var targetPosition = targetable.GetTargetGlobalPosition();
var targetPositionOnCamera = _camera.UnprojectPosition(targetPosition);
var centerOfScreen = _camera.GetViewport().GetVisibleRect().Size / 2f;
var aimAssistDirection = centerOfScreen - targetPositionOnCamera;
var aimAssist = aimAssistDirection * AimAssistStrength / 1000f;
var distanceToTarget = (targetPosition - HeadSystem.GlobalPosition).Length();
if (distanceToTarget > AimAssistReductionStartDistance) return aimAssist; // useless but clearer
// Reduce aim assist when closing in on target because it can mess with the camera when dashing through
var distanceFactor = Mathf.Clamp(distanceToTarget / AimAssistReductionStartDistance, 0f, 1f);
var aimAssistReductionFactor = Mathf.Lerp(AimAssistReductionWhenCloseToTarget, 1f, distanceFactor);
return aimAssist * aimAssistReductionFactor * _aimAssistMultiplier;
}
private void LookAround(double delta)
{
Vector2 inputLookDir = new Vector2(_inputRotateY, _inputRotateFloorplane);
@@ -947,6 +991,9 @@ public partial class PlayerController : CharacterBody3D,
var wallHugContactPoint = _onWallRunning.Active ? _currentWallContactPoint : Vector3.Zero;
var moveInput = GetGlobalMoveInput();
if (_isUsingGamepad)
inputLookDir += ComputeAimAssist();
var lookAroundInputs = new HeadSystem.CameraParameters(
Delta: delta,
LookDir: inputLookDir,
@@ -1059,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)
@@ -1085,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;
}
@@ -1134,6 +1187,11 @@ public partial class PlayerController : CharacterBody3D,
}
public void OnWallStarted()
{
if (_simpleDashCooldownTimer.IsStopped())
_canDash = true;
else
_simpleDashCooldownTimer.Start();
if (!WallHugSystem.IsWallHugging())
return;
@@ -1151,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;
}
@@ -1171,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;
@@ -1202,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()
@@ -1215,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";
@@ -1330,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);
@@ -1393,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;
}
@@ -1727,6 +1794,7 @@ public partial class PlayerController : CharacterBody3D,
public void PerformEmpoweredAction()
{
_isWallJumpAvailable = true;
_canDashAirborne = true;
EmpoweredActionsLeft--;
_playerState.SendEvent(EmpoweredActionsLeft <= 0 ? "expired" : "power_used");
}
@@ -1772,6 +1840,9 @@ public partial class PlayerController : CharacterBody3D,
// DashIndicatorMesh.Visible = true;
if (!isOnFloorCustom())
ReduceTimeScaleWhileAiming();
_aimAssisRayCast.TargetPosition = _aimAssisRayCast.TargetPosition.Normalized() *
(DashSystem.DashCast3D.TargetPosition.Length() + DashSystem.DashCastRadius);
}
public void HandleAiming(float delta)
{
@@ -1785,6 +1856,8 @@ public partial class PlayerController : CharacterBody3D,
{
DashSystem.StopPreparingDash();
_aimAssisRayCast.TargetPosition = _aimAssisRayCast.TargetPosition.Normalized() * (TargetingDistance*1.5f);
// DashIndicatorMesh.Visible = false;
}