跳跃手感修正

This commit is contained in:
RedisTKey 2026-01-10 14:04:34 +08:00
parent dd4baf6bc6
commit a1bdf5264a
26 changed files with 290 additions and 705 deletions

View File

@ -1,7 +0,0 @@
extends Node2D
var s := 1
func _unhandled_input(event: InputEvent) -> void:
if event.is_action("ui_down"):
Engine.time_scale = .1

View File

@ -1 +0,0 @@
uid://ds6jy3s0hhmwt

View File

@ -1,7 +1,8 @@
[gd_scene load_steps=8 format=3 uid="uid://3vc8ojbiyy5w"]
[gd_scene load_steps=9 format=3 uid="uid://3vc8ojbiyy5w"]
[ext_resource type="Script" uid="uid://crgac4manhoud" path="res://_game/game.gd" id="1_yksyv"]
[ext_resource type="PackedScene" uid="uid://cvqehvdjpoar4" path="res://_player/player_controller.tscn" id="2_x2i0j"]
[ext_resource type="PackedScene" uid="uid://sursemsbf1lg" path="res://_scene/level1/l0_s0.tscn" id="3_4ifj7"]
[ext_resource type="PackedScene" uid="uid://cd88ydqhdo28" path="res://_scene/level1/l1_s1.tscn" id="4_m1t3p"]
[ext_resource type="PackedScene" uid="uid://djs1eg5y008cs" path="res://_scene/level1/l1_s2.tscn" id="5_5s0xe"]
[ext_resource type="PackedScene" uid="uid://dh43kt0l28qd5" path="res://_scene/level1/l1_s3.tscn" id="6_ktxjv"]
@ -13,6 +14,8 @@ script = ExtResource("1_yksyv")
[node name="PlayerController" parent="." instance=ExtResource("2_x2i0j")]
[node name="ReedScene" parent="." instance=ExtResource("3_4ifj7")]
[node name="L1_S1" parent="." instance=ExtResource("4_m1t3p")]
[node name="L1_S2" parent="." instance=ExtResource("5_5s0xe")]

View File

@ -1,47 +0,0 @@
[gd_scene load_steps=12 format=3 uid="uid://bj2318o3y68x2"]
[ext_resource type="Script" uid="uid://ds6jy3s0hhmwt" path="res://_game/DemoScript.gd" id="1_2tycc"]
[ext_resource type="PackedScene" uid="uid://cvqehvdjpoar4" path="res://_player/player_controller.tscn" id="2_gslp7"]
[ext_resource type="PackedScene" uid="uid://gwhff4qaouxy" path="res://_player/Avatar.tscn" id="3_6jw57"]
[ext_resource type="PackedScene" uid="uid://bt55vmoc83l6g" path="res://_game/scenes/l_1_s_1.tscn" id="4_6jw57"]
[ext_resource type="PackedScene" uid="uid://c6and5mqr3wv1" path="res://_game/scenes/l_1_s_2.tscn" id="5_2t6pm"]
[ext_resource type="PackedScene" uid="uid://0sivr6aig7gm" path="res://_game/scenes/l_1_s_3.tscn" id="6_xkd7q"]
[ext_resource type="Script" uid="uid://5e157vdk6175" path="res://addons/reedscene/scene/ReedScene.gd" id="6_xotud"]
[ext_resource type="Script" uid="uid://bh066o84byplh" path="res://addons/reedscene/scene/ReedSceneID.gd" id="7_2tycc"]
[ext_resource type="Script" uid="uid://dn0ksjoswquf5" path="res://addons/reedscene/scene/SceneManager.gd" id="8_3ihdv"]
[ext_resource type="Script" uid="uid://dsgl7lbyjsiif" path="res://addons/reedscene/act/ActManager.gd" id="9_hc6q0"]
[ext_resource type="Script" uid="uid://pxjf5vst08eo" path="res://addons/reedscene/prop/PropManager.gd" id="10_mwuv1"]
[node name="Game" type="Node2D"]
script = ExtResource("1_2tycc")
[node name="PlayerController" parent="." node_paths=PackedStringArray("auto_controlled_avatar") instance=ExtResource("2_gslp7")]
auto_controlled_avatar = NodePath("../Avatar")
[node name="Avatar" parent="." instance=ExtResource("3_6jw57")]
position = Vector2(283, 253)
collision_mask = 4
[node name="l1_s1" parent="." instance=ExtResource("4_6jw57")]
[node name="l1_s2" parent="." instance=ExtResource("5_2t6pm")]
debug_log = true
[node name="l1_s3" parent="." instance=ExtResource("6_xkd7q")]
debug_log = true
[node name="ReedScene" type="Node2D" parent="."]
script = ExtResource("6_xotud")
metadata/_custom_type_script = "uid://5e157vdk6175"
[node name="[Invalid!]" type="Node" parent="ReedScene"]
script = ExtResource("7_2tycc")
[node name="SceneManager" type="Node" parent="ReedScene"]
script = ExtResource("8_3ihdv")
[node name="ActManager" type="Node" parent="ReedScene"]
script = ExtResource("9_hc6q0")
[node name="Props" type="Node2D" parent="ReedScene"]
script = ExtResource("10_mwuv1")

View File

@ -1 +0,0 @@
extends SceneManager

View File

@ -1 +0,0 @@
uid://d3600a4hjp6y6

View File

@ -1,6 +0,0 @@
extends SceneManager
func _on_player_trigger_volumn_player_entered(body: CharacterBody2D) -> void:
_act_manager.switch_act_with_id(1)

View File

@ -1 +0,0 @@
uid://b6fnrkxku8rrc

View File

@ -1,8 +1,9 @@
extends Node2D
func _ready() -> void:
$ReedScene.switch_act_by_id(1)
#$L1_S1.switch_act_by_id(1)
$L1_S2.switch_act_by_id(1)
#$L1_S2.switch_act_by_id(1)
#$L1_S3.switch_act_by_id(1)
#$L1_S4.switch_act_by_id(1)
#$L1_S5.switch_act_by_id(1)

View File

@ -1,231 +0,0 @@
[gd_scene load_steps=32 format=4 uid="uid://bt55vmoc83l6g"]
[ext_resource type="Script" uid="uid://5e157vdk6175" path="res://addons/reedscene/scene/ReedScene.gd" id="1_wiqi4"]
[ext_resource type="Script" uid="uid://bh066o84byplh" path="res://addons/reedscene/scene/ReedSceneID.gd" id="2_1t0dx"]
[ext_resource type="Script" uid="uid://43ula8nd3yl7" path="res://_game/scenes/scripts/s_l1_s1.gd" id="3_1t0dx"]
[ext_resource type="Script" uid="uid://dsgl7lbyjsiif" path="res://addons/reedscene/act/ActManager.gd" id="4_a224g"]
[ext_resource type="Script" uid="uid://fxpk2ot6otfh" path="res://addons/reedscene/act/Act.gd" id="5_a224g"]
[ext_resource type="Script" uid="uid://pxjf5vst08eo" path="res://addons/reedscene/prop/PropManager.gd" id="5_fyfyw"]
[ext_resource type="PackedScene" uid="uid://b5nx4dntm0gyn" path="res://_props/door_manager/event_trigger_door.tscn" id="6_8hwae"]
[ext_resource type="Script" uid="uid://baqgorvlumyju" path="res://addons/reedscene/act/SingleAct.gd" id="6_fyfyw"]
[ext_resource type="Script" uid="uid://b4menkyub4ce7" path="res://addons/reedscene/prop/PropComponent.gd" id="7_s6kod"]
[ext_resource type="Script" uid="uid://di41kt2tj34c2" path="res://addons/reedscene/prop/StateManager.gd" id="8_1dh04"]
[ext_resource type="Script" uid="uid://7lml6d1t5xtq" path="res://addons/reedscene/prop/PropState.gd" id="9_648qh"]
[ext_resource type="PackedScene" uid="uid://1l06de041i40" path="res://_levels/l_level_1.tscn" id="10_25twt"]
[ext_resource type="PackedScene" uid="uid://c3mievyfhx6ni" path="res://_props/coin/coin.tscn" id="11_1t0dx"]
[ext_resource type="Script" uid="uid://cdvgq0xqdbagk" path="res://addons/reedscene/prop/Effect/ReedPropEffect.gd" id="12_fyfyw"]
[ext_resource type="Script" uid="uid://jeybblac0kg2" path="res://addons/reedscene/prop/ReedTransition.gd" id="13_8hwae"]
[ext_resource type="PackedScene" uid="uid://b0xmcb5i4jey" path="res://_props/_prefabs/camera/scene_static_camera.tscn" id="14_s6kod"]
[sub_resource type="Resource" id="Resource_s6kod"]
script = ExtResource("6_fyfyw")
[sub_resource type="Resource" id="Resource_1dh04"]
script = ExtResource("6_fyfyw")
[sub_resource type="Resource" id="Resource_spdfw"]
script = ExtResource("6_fyfyw")
state_id = 1
[sub_resource type="Resource" id="Resource_ykqcq"]
script = ExtResource("5_a224g")
prop_state_map = Dictionary[int, ExtResource("6_fyfyw")]({
0: SubResource("Resource_s6kod"),
1: SubResource("Resource_1dh04"),
2: SubResource("Resource_spdfw")
})
[sub_resource type="Resource" id="Resource_gu0l6"]
script = ExtResource("6_fyfyw")
state_id = 1
use_trans = true
metadata/_custom_type_script = "uid://baqgorvlumyju"
[sub_resource type="Resource" id="Resource_648qh"]
script = ExtResource("5_a224g")
prop_state_map = Dictionary[int, ExtResource("6_fyfyw")]({
0: SubResource("Resource_gu0l6")
})
[sub_resource type="Resource" id="Resource_onwc0"]
script = ExtResource("6_fyfyw")
use_trans = true
metadata/_custom_type_script = "uid://baqgorvlumyju"
[sub_resource type="Resource" id="Resource_7tspm"]
script = ExtResource("6_fyfyw")
state_id = 1
use_trans = true
metadata/_custom_type_script = "uid://baqgorvlumyju"
[sub_resource type="Resource" id="Resource_jh33u"]
script = ExtResource("5_a224g")
prop_state_map = Dictionary[int, ExtResource("6_fyfyw")]({
0: SubResource("Resource_onwc0"),
1: SubResource("Resource_7tspm")
})
[sub_resource type="Resource" id="Resource_fyfyw"]
script = ExtResource("12_fyfyw")
effect_type = 1
value = null
func_name = &"reset_door_state_id"
func_args = [0]
metadata/_custom_type_script = "uid://cdvgq0xqdbagk"
[sub_resource type="Resource" id="Resource_bco80"]
script = ExtResource("12_fyfyw")
effect_type = 1
value = null
func_name = &"door_close"
metadata/_custom_type_script = "uid://cdvgq0xqdbagk"
[sub_resource type="Resource" id="Resource_22pon"]
script = ExtResource("12_fyfyw")
effect_type = 1
value = null
func_name = &"reset_door_state_id"
func_args = [1]
metadata/_custom_type_script = "uid://cdvgq0xqdbagk"
[sub_resource type="Resource" id="Resource_25twt"]
script = ExtResource("12_fyfyw")
effect_type = 1
value = null
func_name = &"door_open"
metadata/_custom_type_script = "uid://cdvgq0xqdbagk"
[sub_resource type="Resource" id="Resource_rlswc"]
script = ExtResource("12_fyfyw")
target_type = 1
child_node_name = &"Tool"
effect_type = 1
value = null
func_name = &"release_self_priority"
metadata/_custom_type_script = "uid://cdvgq0xqdbagk"
[sub_resource type="Resource" id="Resource_1vufk"]
script = ExtResource("12_fyfyw")
target_type = 1
child_node_name = &"Tool"
effect_type = 1
value = null
func_name = &"hold_self_priority"
metadata/_custom_type_script = "uid://cdvgq0xqdbagk"
[node name="l1_s1" type="Node2D"]
script = ExtResource("1_wiqi4")
debug_log = true
metadata/_custom_type_script = "uid://5e157vdk6175"
[node name="[ID_ 9900001]" type="Node" parent="."]
script = ExtResource("2_1t0dx")
scene_id = 9900001
[node name="SceneManager" type="Node" parent="."]
script = ExtResource("3_1t0dx")
[node name="ActManager" type="Node" parent="."]
script = ExtResource("4_a224g")
prop_state_map = Dictionary[int, ExtResource("5_a224g")]({
0: SubResource("Resource_ykqcq"),
1: SubResource("Resource_648qh"),
2: SubResource("Resource_jh33u")
})
[node name="Props" type="Node2D" parent="."]
script = ExtResource("5_fyfyw")
[node name="EventTriggerDoor" parent="Props" instance=ExtResource("6_8hwae")]
position = Vector2(656, 268)
[node name="[Prop_0000]" type="Node" parent="Props/EventTriggerDoor"]
script = ExtResource("7_s6kod")
prop_id = 0
[node name="States" type="Node" parent="Props/EventTriggerDoor/[Prop_0000]"]
script = ExtResource("8_1dh04")
[node name="[ID_0] Close" type="Node" parent="Props/EventTriggerDoor/[Prop_0000]/States"]
script = ExtResource("9_648qh")
state_id = 0
effects = Array[ExtResource("12_fyfyw")]([SubResource("Resource_fyfyw")])
[node name="From1" type="Node" parent="Props/EventTriggerDoor/[Prop_0000]/States/[ID_0] Close"]
script = ExtResource("13_8hwae")
from_state_id = 1
effects = Array[ExtResource("12_fyfyw")]([SubResource("Resource_bco80")])
metadata/_custom_type_script = "uid://jeybblac0kg2"
[node name="[ID_1] Open" type="Node" parent="Props/EventTriggerDoor/[Prop_0000]/States"]
script = ExtResource("9_648qh")
state_id = 1
effects = Array[ExtResource("12_fyfyw")]([SubResource("Resource_22pon")])
[node name="From0" type="Node" parent="Props/EventTriggerDoor/[Prop_0000]/States/[ID_1] Open"]
script = ExtResource("13_8hwae")
from_state_id = 0
effects = Array[ExtResource("12_fyfyw")]([SubResource("Resource_25twt")])
metadata/_custom_type_script = "uid://jeybblac0kg2"
[node name="EventTriggerDoor2" parent="Props" instance=ExtResource("6_8hwae")]
position = Vector2(15, 270)
[node name="[Prop_0001]" type="Node" parent="Props/EventTriggerDoor2"]
script = ExtResource("7_s6kod")
prop_id = 1
[node name="States" type="Node" parent="Props/EventTriggerDoor2/[Prop_0001]"]
script = ExtResource("8_1dh04")
[node name="[ID_0] Close" type="Node" parent="Props/EventTriggerDoor2/[Prop_0001]/States"]
script = ExtResource("9_648qh")
state_id = 0
effects = Array[ExtResource("12_fyfyw")]([SubResource("Resource_fyfyw")])
[node name="From1" type="Node" parent="Props/EventTriggerDoor2/[Prop_0001]/States/[ID_0] Close"]
script = ExtResource("13_8hwae")
from_state_id = 1
effects = Array[ExtResource("12_fyfyw")]([SubResource("Resource_bco80")])
metadata/_custom_type_script = "uid://jeybblac0kg2"
[node name="[ID_1] Open" type="Node" parent="Props/EventTriggerDoor2/[Prop_0001]/States"]
script = ExtResource("9_648qh")
state_id = 1
effects = Array[ExtResource("12_fyfyw")]([SubResource("Resource_22pon")])
[node name="From0" type="Node" parent="Props/EventTriggerDoor2/[Prop_0001]/States/[ID_1] Open"]
script = ExtResource("13_8hwae")
from_state_id = 0
effects = Array[ExtResource("12_fyfyw")]([SubResource("Resource_25twt")])
metadata/_custom_type_script = "uid://jeybblac0kg2"
[node name="SceneStaticCamera" parent="Props" instance=ExtResource("14_s6kod")]
position = Vector2(334, 183)
tween_on_load = false
draw_limits = true
[node name="[Prop_0002]" type="Node" parent="Props/SceneStaticCamera"]
script = ExtResource("7_s6kod")
prop_id = 2
[node name="States" type="Node" parent="Props/SceneStaticCamera/[Prop_0002]"]
script = ExtResource("8_1dh04")
[node name="[ID_0] Disable" type="Node" parent="Props/SceneStaticCamera/[Prop_0002]/States"]
script = ExtResource("9_648qh")
state_id = 0
effects = Array[ExtResource("12_fyfyw")]([SubResource("Resource_rlswc")])
[node name="[ID_1] Enable" type="Node" parent="Props/SceneStaticCamera/[Prop_0002]/States"]
script = ExtResource("9_648qh")
state_id = 1
effects = Array[ExtResource("12_fyfyw")]([SubResource("Resource_1vufk")])
[node name="l1_s1_tile" parent="." groups=["GRAPABLE"] instance=ExtResource("10_25twt")]
tile_map_data = PackedByteArray("AAAAAAQAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAwAAAAAAAAAAAAAABQAAAAAAAAAAAAAABUAAAAAAAAAAAAAABYAAAAAAAAAAAABAAQAAAAAAAAAAAABAAUAAAAAAAAAAAABAAYAAAAAAAAAAAABAAcAAAAAAAAAAAABAAgAAAAAAAAAAAABAAkAAAAAAAAAAAABAAoAAAAAAAAAAAABAAsAAAAAAAAAAAABAAwAAAAAAAAAAAABABQAAAAAAAAAAAABABUAAAAAAAAAAAABABYAAAAAAAAAAAACABQAAAAAAAAAAAACABUAAAAAAAAAAAACABYAAAAAAAAAAAADAAAAAAAAAAAAAAADAAEAAAAAAAAAAAADAAIAAAAAAAAAAAADABQAAAAAAAAAAAADABUAAAAAAAAAAAADABYAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAEAAAAAAAAAAAAEAAIAAAAAAAAAAAAEABQAAAAAAAAAAAAEABUAAAAAAAAAAAAEABYAAAAAAAAAAAAFAAAAAAAAAAAAAAAFAAEAAAAAAAAAAAAFAAIAAAAAAAAAAAAFABQAAAAAAAAAAAAFABUAAAAAAAAAAAAFABYAAAAAAAAAAAAGABQAAAAAAAAAAAAGABUAAAAAAAAAAAAGABYAAAAAAAAAAAAHABQAAAAAAAAAAAAHABUAAAAAAAAAAAAHABYAAAAAAAAAAAAIABQAAAAAAAAAAAAIABUAAAAAAAAAAAAIABYAAAAAAAAAAAAJABQAAAAAAAAAAAAJABUAAAAAAAAAAAAJABYAAAAAAAAAAAAKABQAAAAAAAAAAAAKABUAAAAAAAAAAAAKABYAAAAAAAAAAAALABQAAAAAAAAAAAALABUAAAAAAAAAAAALABYAAAAAAAAAAAAMABQAAAAAAAAAAAAMABUAAAAAAAAAAAAMABYAAAAAAAAAAAANABQAAAAAAAAAAAANABUAAAAAAAAAAAANABYAAAAAAAAAAAAOABQAAAAAAAAAAAAOABUAAAAAAAAAAAAOABYAAAAAAAAAAAAPABQAAAAAAAAAAAAPABUAAAAAAAAAAAAPABYAAAAAAAAAAAAQABQAAAAAAAAAAAAQABUAAAAAAAAAAAAQABYAAAAAAAAAAAARABQAAAAAAAAAAAARABUAAAAAAAAAAAARABYAAAAAAAAAAAASABQAAAAAAAAAAAASABUAAAAAAAAAAAASABYAAAAAAAAAAAATABQAAAAAAAAAAAATABUAAAAAAAAAAAATABYAAAAAAAAAAAAUABQAAAAAAAAAAAAUABUAAAAAAAAAAAAUABYAAAAAAAAAAAAVABQAAAAAAAAAAAAVABUAAAAAAAAAAAAVABYAAAAAAAAAAAAGAAAAAAAAAAAAAAAGAAEAAAAAAAAAAAAGAAIAAAAAAAAAAAAHAAAAAAAAAAAAAAAHAAEAAAAAAAAAAAAHAAIAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAEAAAAAAAAAAAAIAAIAAAAAAAAAAAAJAAAAAAAAAAAAAAAJAAEAAAAAAAAAAAAJAAIAAAAAAAAAAAAKAAAAAAAAAAAAAAAKAAEAAAAAAAAAAAAKAAIAAAAAAAAAAAALAAAAAAAAAAAAAAALAAEAAAAAAAAAAAALAAIAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAEAAAAAAAAAAAAMAAIAAAAAAAAAAAANAAAAAAAAAAAAAAANAAEAAAAAAAAAAAANAAIAAAAAAAAAAAAOAAAAAAAAAAAAAAAOAAEAAAAAAAAAAAAOAAIAAAAAAAAAAAAcABQAAAAAAAAAAAAcABUAAAAAAAAAAAAcABYAAAAAAAAAAAAdABQAAAAAAAAAAAAdABUAAAAAAAAAAAAdABYAAAAAAAAAAAAeABQAAAAAAAAAAAAeABUAAAAAAAAAAAAeABYAAAAAAAAAAAAfABQAAAAAAAAAAAAfABUAAAAAAAAAAAAfABYAAAAAAAAAAAAgABQAAAAAAAAAAAAgABUAAAAAAAAAAAAgABYAAAAAAAAAAAAhABQAAAAAAAAAAAAhABUAAAAAAAAAAAAhABYAAAAAAAAAAAAiABQAAAAAAAAAAAAiABUAAAAAAAAAAAAiABYAAAAAAAAAAAAjABQAAAAAAAAAAAAjABUAAAAAAAAAAAAjABYAAAAAAAAAAAAkABQAAAAAAAAAAAAkABUAAAAAAAAAAAAkABYAAAAAAAAAAAAlABQAAAAAAAAAAAAlABUAAAAAAAAAAAAlABYAAAAAAAAAAAAmABQAAAAAAAAAAAAmABUAAAAAAAAAAAAmABYAAAAAAAAAAAAnABQAAAAAAAAAAAAnABUAAAAAAAAAAAAnABYAAAAAAAAAAAAoABQAAAAAAAAAAAAoABUAAAAAAAAAAAAoABYAAAAAAAAAAAApABQAAAAAAAAAAAApABUAAAAAAAAAAAApABYAAAAAAAAAAAAWABQAAAAAAAAAAAAWABUAAAAAAAAAAAAWABYAAAAAAAAAAAAbABQAAAAAAAAAAAAbABUAAAAAAAAAAAAbABYAAAAAAAAAAAAXABQAAAAAAAAAAAAXABUAAAAAAAAAAAAXABYAAAAAAAAAAAAYABQAAAAAAAAAAAAYABUAAAAAAAAAAAAYABYAAAAAAAAAAAAZABQAAAAAAAAAAAAZABUAAAAAAAAAAAAZABYAAAAAAAAAAAAaABQAAAAAAAAAAAAaABUAAAAAAAAAAAAaABYAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAEAAAAAAAAAAAAPAAIAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAEAAAAAAAAAAAAQAAIAAAAAAAAAAAARAAAAAAAAAAAAAAARAAEAAAAAAAAAAAARAAIAAAAAAAAAAAASAAAAAAAAAAAAAAASAAEAAAAAAAAAAAASAAIAAAAAAAAAAAATAAAAAAAAAAAAAAATAAEAAAAAAAAAAAATAAIAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAAEAAAAAAAAAAAAUAAIAAAAAAAAAAAAVAAAAAAAAAAAAAAAVAAEAAAAAAAAAAAAVAAIAAAAAAAAAAAAWAAAAAAAAAAAAAAAWAAEAAAAAAAAAAAAWAAIAAAAAAAAAAAAXAAAAAAAAAAAAAAAXAAEAAAAAAAAAAAAXAAIAAAAAAAAAAAAYAAAAAAAAAAAAAAAYAAEAAAAAAAAAAAAYAAIAAAAAAAAAAAAZAAAAAAAAAAAAAAAZAAEAAAAAAAAAAAAZAAIAAAAAAAAAAAAaAAAAAAAAAAAAAAAaAAEAAAAAAAAAAAAaAAIAAAAAAAAAAAAbAAAAAAAAAAAAAAAbAAEAAAAAAAAAAAAbAAIAAAAAAAAAAAAcAAAAAAAAAAAAAAAcAAEAAAAAAAAAAAAcAAIAAAAAAAAAAAAdAAAAAAAAAAAAAAAdAAEAAAAAAAAAAAAdAAIAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAEAAAAAAAAAAAAeAAIAAAAAAAAAAAAfAAAAAAAAAAAAAAAfAAEAAAAAAAAAAAAfAAIAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAEAAAAAAAAAAAAgAAIAAAAAAAAAAAAhAAAAAAAAAAAAAAAhAAEAAAAAAAAAAAAhAAIAAAAAAAAAAAAiAAAAAAAAAAAAAAAiAAEAAAAAAAAAAAAiAAIAAAAAAAAAAAAjAAAAAAAAAAAAAAAjAAEAAAAAAAAAAAAjAAIAAAAAAAAAAAAkAAAAAAAAAAAAAAAkAAEAAAAAAAAAAAAkAAIAAAAAAAAAAAAlAAAAAAAAAAAAAAAlAAEAAAAAAAAAAAAlAAIAAAAAAAAAAAAmAAAAAAAAAAAAAAAmAAEAAAAAAAAAAAAmAAIAAAAAAAAAAAAnAAAAAAAAAAAAAAAnAAEAAAAAAAAAAAAnAAIAAAAAAAAAAAAoAAAAAAAAAAAAAAAoAAEAAAAAAAAAAAAoAAIAAAAAAAAAAAApAAAAAAAAAAAAAAApAAEAAAAAAAAAAAApAAIAAAAAAAAAAAAoAAMAAAAAAAAAAAAoAAQAAAAAAAAAAAAoAAUAAAAAAAAAAAAoAAYAAAAAAAAAAAAoAAcAAAAAAAAAAAAoAAgAAAAAAAAAAAAoAAkAAAAAAAAAAAAoAAoAAAAAAAAAAAAoAAsAAAAAAAAAAAAoAAwAAAAAAAAAAAApAAMAAAAAAAAAAAApAAQAAAAAAAAAAAApAAUAAAAAAAAAAAApAAYAAAAAAAAAAAApAAcAAAAAAAAAAAApAAgAAAAAAAAAAAApAAkAAAAAAAAAAAApAAoAAAAAAAAAAAApAAsAAAAAAAAAAAApAAwAAAAAAAAAAAA=")
[node name="Coin" parent="." instance=ExtResource("11_1t0dx")]
position = Vector2(596, 291)
[connection signal="collected" from="Coin" to="SceneManager" method="_on_coin_collected"]

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,24 +0,0 @@
[gd_scene load_steps=6 format=3 uid="uid://jd5d3i4xqj2m"]
[ext_resource type="Script" uid="uid://5e157vdk6175" path="res://addons/reedscene/scene/ReedScene.gd" id="1_r4clk"]
[ext_resource type="Script" uid="uid://bh066o84byplh" path="res://addons/reedscene/scene/ReedSceneID.gd" id="2_oqwc4"]
[ext_resource type="Script" uid="uid://dn0ksjoswquf5" path="res://addons/reedscene/scene/SceneManager.gd" id="3_jbgha"]
[ext_resource type="Script" uid="uid://dsgl7lbyjsiif" path="res://addons/reedscene/act/ActManager.gd" id="4_w6ro2"]
[ext_resource type="Script" uid="uid://pxjf5vst08eo" path="res://addons/reedscene/prop/PropManager.gd" id="5_qmrnk"]
[node name="l1_s4" type="Node2D"]
script = ExtResource("1_r4clk")
metadata/_custom_type_script = "uid://5e157vdk6175"
[node name="[ID_ 9900004]" type="Node" parent="."]
script = ExtResource("2_oqwc4")
scene_id = 9900004
[node name="SceneManager" type="Node" parent="."]
script = ExtResource("3_jbgha")
[node name="ActManager" type="Node" parent="."]
script = ExtResource("4_w6ro2")
[node name="Props" type="Node2D" parent="."]
script = ExtResource("5_qmrnk")

View File

@ -1,5 +0,0 @@
extends SceneManager
func _on_coin_collected(collector: Node2D) -> void:
_act_manager.switch_act_with_id(1)

View File

@ -1 +0,0 @@
uid://43ula8nd3yl7

View File

@ -1,16 +0,0 @@
extends SceneManager
func _on_coin_collected(collector: Node2D) -> void:
_act_manager.switch_act_with_id(1)
var l1_s1: ReedScene = ReedSceneRegistry.get_scene(9900001)
if l1_s1:
l1_s1.switch_act_by_id(2)
func _on_player_trigger_volumn_player_entered(body: CharacterBody2D) -> void:
_act_manager.switch_act_with_id(2)
func _on_player_trigger_volumn_2_player_entered(body: CharacterBody2D) -> void:
_act_manager.switch_act_with_id(3)

View File

@ -1 +0,0 @@
uid://bna42bay8yt1m

View File

@ -1,5 +0,0 @@
extends SceneManager
func _on_coin_collected(collector: Node2D) -> void:
_act_manager.switch_act_with_id(1)

View File

@ -1 +0,0 @@
uid://c4gk6pcjk8no3

View File

@ -157,14 +157,15 @@ climb_hop_velocity_x = 180.0
climb_hop_velocity_y = 334.0
jump_force = 460.0
jump_hold_maxium_time = 0.125
jump_horizontal_Boost = 265.0
jump_horizontal_Boost_last_time = 0.3
jump_horizontal_Boost = 160.0
jump_countinus_horizontal_Boost = 500.0
jump_horizontal_Boost_last_time = 0.12
light_gravity_threshold = 135.0
light_gravity_mult = 0.6
wall_jump_base_force_x = 260.0
wall_jump_base_force_y = 220.0
fall_maxium_speed = 430.0
air_control_mult = 0.85
air_control_mult = 0.35
run_accel = 1300.0
run_reduce = 2400.0
move_speed_max = 202.0

View File

@ -56,9 +56,15 @@ func _draw() -> void:
var x: float = clampf(abs(velocity.x),1,1000) * .2 * sign(velocity.x)
var y: float = clampf(abs(velocity.y),1,1000) * .2 * sign(velocity.y)
var a_x: float = clampf(abs(velocity.x),1,2000) * .3 * sign(locomotion_comp._current_acceleration.x)
var a_y: float = clampf(abs(velocity.x),1,2000) * .3 * sign(locomotion_comp._current_acceleration.y)
draw_line(Vector2.ZERO,Vector2(x, 0),Color.RED,4)
draw_line(Vector2.ZERO,Vector2(0, y),Color.GREEN,4)
draw_line(Vector2.ZERO,Vector2(a_x, 0),Color.YELLOW,2)
draw_line(Vector2.ZERO,Vector2(0, a_y),Color.PURPLE,2)
func _process(delta: float) -> void:
queue_redraw()

View File

@ -38,7 +38,6 @@ func _enter() -> void:
func _update(delta: float) -> void:
if auto_jump_timer > 0:
auto_jump_timer -= delta
print("允许自动跳")
if agent.get_is_on_floor() && agent.velocity.y >= 0:
#自动跳

190
_scene/level1/l0_s0.tscn Normal file

File diff suppressed because one or more lines are too long

View File

@ -15,8 +15,14 @@ class_name JumpLocomotionComponent extends LocomotionComponent
@export var jump_hold_maxium_time : float = .18
##跳跃时对移动输入的补正
@export var jump_horizontal_Boost : float = 80
##跳跃时对移动输入的补正
@export var jump_countinus_horizontal_Boost : float = 200
##是否持续的增加jump的水平补正如果不持续则只在跳跃的第一帧添加
@export var countinus_jump_boost: bool = true
##跳跃对移动输入的水平补正可以持续的时间
@export var jump_horizontal_Boost_last_time : float = .08
##跳跃水平方向速度补偿的最大值,如果当前速度加补偿速度超过了这个阈值,会自动重置为该阈值
@export var max_jump_horizontal_boost_speed: float = 600
##Jump时是否还需要受到重力影响
@export var jump_effected_by_gravity : bool = true
##半重力触发阈值,当速度小于这个数值时,会将角色的重力减半
@ -42,8 +48,25 @@ var _h_boost_timer: float
func jump() -> bool:
if _is_jumping : return false
##如果是同方向的,则
characterbody.velocity.x = _movement_input * jump_horizontal_Boost
var input_dir = sign(_movement_input) as float
if input_dir != 0 :
var vel_dir := sign(characterbody.velocity.x)
var accel_dir := sign(_current_acceleration.x)
# ---------- 情况 1角色在起步 ----------
# velocity 还没起来,但已经在往某方向加速
if vel_dir == 0 and accel_dir == input_dir:
characterbody.velocity.x += input_dir * jump_horizontal_Boost
# ---------- 情况 2角色稳定同向移动 ----------
elif vel_dir == input_dir and accel_dir == 0:
characterbody.velocity.x += input_dir * jump_horizontal_Boost
# ---------- 情况 3角色正在反向 / pivot ----------
elif vel_dir == -input_dir:
characterbody.velocity.x = input_dir * jump_horizontal_Boost
apply_jump_horizontal_boost(input_dir)
_jump_timer = jump_hold_maxium_time
_h_boost_timer = jump_horizontal_Boost_last_time
@ -86,12 +109,42 @@ func _update_gravity(delta: float) -> void:
if _jump_timer > 0 and _is_jumping:
_jump_timer -= delta
if _h_boost_timer > 0 and _is_jumping:
# --------- Continuous Jump Horizontal Boost ---------
if countinus_jump_boost \
and _is_jumping \
and _h_boost_timer > 0:
_h_boost_timer -= delta
characterbody.velocity.x = _movement_input * jump_horizontal_Boost
var input_dir := sign(_movement_input)
if input_dir != 0:
_apply_continuous_jump_boost(input_dir, delta)
super._update_gravity(delta)
## 应用跳跃水平补偿的后的处理逻辑
func apply_jump_horizontal_boost(input_dir: float) -> void:
var boost_vel := input_dir * jump_horizontal_Boost
var current_vel := characterbody.velocity.x
# 只处理「同方向」的情况
if sign(current_vel) == input_dir:
if abs(current_vel) > max_jump_horizontal_boost_speed:
characterbody.velocity.x = boost_vel
func _apply_continuous_jump_boost(input_dir: float, delta: float) -> void:
var current_vel := characterbody.velocity.x
var max_vel := input_dir * max_jump_horizontal_boost_speed
# 如果已经超过最大值(极少数情况),直接截断
if sign(current_vel) == input_dir and abs(current_vel) > abs(max_vel):
characterbody.velocity.x = max_vel
return
# 只有在“同方向”或“静止”时,才允许继续加速
if current_vel == 0 or sign(current_vel) == input_dir:
characterbody.velocity.x += input_dir * jump_countinus_horizontal_Boost * delta
##重写重力乘量函数
func _get_gravity_scale() -> float:
var c = absf(characterbody.velocity.y) <= light_gravity_threshold && _is_jumping

View File

@ -49,6 +49,8 @@ var _was_moving : bool = false
var _in_pivoting : bool = false
var last_frame_character_on_floor: bool = false
var is_first_update: bool = false
var _current_acceleration: Vector2
var _last_frame_character_velocity: Vector2
signal move_dir_changed_in_moving(direction : float)
signal start_move(direction : float)
@ -89,6 +91,10 @@ func _physics_process(delta: float) -> void:
_update_gravity(delta) #更新重力
characterbody.move_and_slide() #移动更新
## 更新角色x轴上的加速度
_current_acceleration = (characterbody.velocity - _last_frame_character_velocity) / delta
_last_frame_character_velocity = characterbody.velocity
_handle_body_ground_state(delta)
##更新重力相关的函数
@ -106,18 +112,7 @@ func _update_movement(delta : float) -> void:
var input_dir = sign(_movement_input) as float
var current_dir = sign(characterbody.velocity.x) as float
var accel: float
if abs(characterbody.velocity.x) > move_speed_max or \
input_dir * current_dir < 0 or \
(input_dir == 0 and abs(characterbody.velocity.x) > 0):
#如果:
# 1. 速度超过极限速度
# 2. 移动方向和输入方向相反
# 3. 输入为0但仍然有速度。(放开输入,等待停止)
#那么apply 减速的加速度。
accel = run_reduce
else:
accel = run_accel #其他case都是加速的加速度
var accel: float = _get_acceleration(input_dir,current_dir)
#如果检测到当前速度和加速度方向不同则发送移动方向更改event
if current_dir * input_dir < 0 and not _in_pivoting:
@ -128,13 +123,31 @@ func _update_movement(delta : float) -> void:
_in_pivoting = false
var applyed_air_control = 1 if characterbody.is_on_floor() else air_control_mult
var target_move_speed = move_speed_max * input_dir * applyed_air_control
var target_move_speed = move_speed_max * input_dir
characterbody.velocity.x = speed_approach(characterbody.velocity.x,target_move_speed,accel * delta)
characterbody.velocity.x = speed_approach(
characterbody.velocity.x,
target_move_speed,
applyed_air_control * accel * delta
)
#检测是否这帧开始了移动
_check_is_start_move()
##获取玩家当前帧的加速度
func _get_acceleration(input_dir:float,current_dir:float) -> float:
if abs(characterbody.velocity.x) > move_speed_max or \
input_dir * current_dir < 0 or \
(input_dir == 0 and abs(characterbody.velocity.x) > 0):
#如果:
# 1. 速度超过极限速度
# 2. 移动方向和输入方向相反
# 3. 输入为0但仍然有速度。(放开输入,等待停止)
#那么apply 减速的加速度。
return run_reduce
else:
return run_accel #其他case都是加速的加速度
##用来检测玩家是否当前帧改变了状态。
func _handle_body_ground_state(delta: float) -> void:
if is_first_update: