跳跃手感修正
This commit is contained in:
parent
dd4baf6bc6
commit
a1bdf5264a
|
|
@ -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
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
uid://ds6jy3s0hhmwt
|
|
||||||
|
|
@ -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="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://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://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://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"]
|
[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="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_S1" parent="." instance=ExtResource("4_m1t3p")]
|
||||||
|
|
||||||
[node name="L1_S2" parent="." instance=ExtResource("5_5s0xe")]
|
[node name="L1_S2" parent="." instance=ExtResource("5_5s0xe")]
|
||||||
|
|
|
||||||
|
|
@ -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")
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
extends SceneManager
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
uid://d3600a4hjp6y6
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
extends SceneManager
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
func _on_player_trigger_volumn_player_entered(body: CharacterBody2D) -> void:
|
|
||||||
_act_manager.switch_act_with_id(1)
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
uid://b6fnrkxku8rrc
|
|
||||||
|
|
@ -1,8 +1,9 @@
|
||||||
extends Node2D
|
extends Node2D
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
|
$ReedScene.switch_act_by_id(1)
|
||||||
#$L1_S1.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_S3.switch_act_by_id(1)
|
||||||
#$L1_S4.switch_act_by_id(1)
|
#$L1_S4.switch_act_by_id(1)
|
||||||
#$L1_S5.switch_act_by_id(1)
|
#$L1_S5.switch_act_by_id(1)
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
@ -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")
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
extends SceneManager
|
|
||||||
|
|
||||||
|
|
||||||
func _on_coin_collected(collector: Node2D) -> void:
|
|
||||||
_act_manager.switch_act_with_id(1)
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
uid://43ula8nd3yl7
|
|
||||||
|
|
@ -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)
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
uid://bna42bay8yt1m
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
extends SceneManager
|
|
||||||
|
|
||||||
|
|
||||||
func _on_coin_collected(collector: Node2D) -> void:
|
|
||||||
_act_manager.switch_act_with_id(1)
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
uid://c4gk6pcjk8no3
|
|
||||||
|
|
@ -157,14 +157,15 @@ climb_hop_velocity_x = 180.0
|
||||||
climb_hop_velocity_y = 334.0
|
climb_hop_velocity_y = 334.0
|
||||||
jump_force = 460.0
|
jump_force = 460.0
|
||||||
jump_hold_maxium_time = 0.125
|
jump_hold_maxium_time = 0.125
|
||||||
jump_horizontal_Boost = 265.0
|
jump_horizontal_Boost = 160.0
|
||||||
jump_horizontal_Boost_last_time = 0.3
|
jump_countinus_horizontal_Boost = 500.0
|
||||||
|
jump_horizontal_Boost_last_time = 0.12
|
||||||
light_gravity_threshold = 135.0
|
light_gravity_threshold = 135.0
|
||||||
light_gravity_mult = 0.6
|
light_gravity_mult = 0.6
|
||||||
wall_jump_base_force_x = 260.0
|
wall_jump_base_force_x = 260.0
|
||||||
wall_jump_base_force_y = 220.0
|
wall_jump_base_force_y = 220.0
|
||||||
fall_maxium_speed = 430.0
|
fall_maxium_speed = 430.0
|
||||||
air_control_mult = 0.85
|
air_control_mult = 0.35
|
||||||
run_accel = 1300.0
|
run_accel = 1300.0
|
||||||
run_reduce = 2400.0
|
run_reduce = 2400.0
|
||||||
move_speed_max = 202.0
|
move_speed_max = 202.0
|
||||||
|
|
|
||||||
|
|
@ -56,8 +56,14 @@ func _draw() -> void:
|
||||||
var x: float = clampf(abs(velocity.x),1,1000) * .2 * sign(velocity.x)
|
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 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(x, 0),Color.RED,4)
|
||||||
draw_line(Vector2.ZERO,Vector2(0, y),Color.GREEN,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:
|
func _process(delta: float) -> void:
|
||||||
queue_redraw()
|
queue_redraw()
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,6 @@ func _enter() -> void:
|
||||||
func _update(delta: float) -> void:
|
func _update(delta: float) -> void:
|
||||||
if auto_jump_timer > 0:
|
if auto_jump_timer > 0:
|
||||||
auto_jump_timer -= delta
|
auto_jump_timer -= delta
|
||||||
print("允许自动跳")
|
|
||||||
|
|
||||||
if agent.get_is_on_floor() && agent.velocity.y >= 0:
|
if agent.get_is_on_floor() && agent.velocity.y >= 0:
|
||||||
#自动跳
|
#自动跳
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
Binary file not shown.
|
|
@ -15,8 +15,14 @@ class_name JumpLocomotionComponent extends LocomotionComponent
|
||||||
@export var jump_hold_maxium_time : float = .18
|
@export var jump_hold_maxium_time : float = .18
|
||||||
##跳跃时对移动输入的补正
|
##跳跃时对移动输入的补正
|
||||||
@export var jump_horizontal_Boost : float = 80
|
@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 jump_horizontal_Boost_last_time : float = .08
|
||||||
|
##跳跃水平方向速度补偿的最大值,如果当前速度加补偿速度超过了这个阈值,会自动重置为该阈值
|
||||||
|
@export var max_jump_horizontal_boost_speed: float = 600
|
||||||
##Jump时是否还需要受到重力影响
|
##Jump时是否还需要受到重力影响
|
||||||
@export var jump_effected_by_gravity : bool = true
|
@export var jump_effected_by_gravity : bool = true
|
||||||
##半重力触发阈值,当速度小于这个数值时,会将角色的重力减半
|
##半重力触发阈值,当速度小于这个数值时,会将角色的重力减半
|
||||||
|
|
@ -42,8 +48,25 @@ var _h_boost_timer: float
|
||||||
func jump() -> bool:
|
func jump() -> bool:
|
||||||
if _is_jumping : return false
|
if _is_jumping : return false
|
||||||
|
|
||||||
##如果是同方向的,则
|
var input_dir = sign(_movement_input) as float
|
||||||
characterbody.velocity.x = _movement_input * jump_horizontal_Boost
|
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
|
_jump_timer = jump_hold_maxium_time
|
||||||
_h_boost_timer = jump_horizontal_Boost_last_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:
|
if _jump_timer > 0 and _is_jumping:
|
||||||
_jump_timer -= delta
|
_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
|
_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)
|
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:
|
func _get_gravity_scale() -> float:
|
||||||
var c = absf(characterbody.velocity.y) <= light_gravity_threshold && _is_jumping
|
var c = absf(characterbody.velocity.y) <= light_gravity_threshold && _is_jumping
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,8 @@ var _was_moving : bool = false
|
||||||
var _in_pivoting : bool = false
|
var _in_pivoting : bool = false
|
||||||
var last_frame_character_on_floor: bool = false
|
var last_frame_character_on_floor: bool = false
|
||||||
var is_first_update: 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 move_dir_changed_in_moving(direction : float)
|
||||||
signal start_move(direction : float)
|
signal start_move(direction : float)
|
||||||
|
|
@ -89,6 +91,10 @@ func _physics_process(delta: float) -> void:
|
||||||
_update_gravity(delta) #更新重力
|
_update_gravity(delta) #更新重力
|
||||||
|
|
||||||
characterbody.move_and_slide() #移动更新
|
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)
|
_handle_body_ground_state(delta)
|
||||||
|
|
||||||
##更新重力相关的函数
|
##更新重力相关的函数
|
||||||
|
|
@ -106,18 +112,7 @@ func _update_movement(delta : float) -> void:
|
||||||
|
|
||||||
var input_dir = sign(_movement_input) as float
|
var input_dir = sign(_movement_input) as float
|
||||||
var current_dir = sign(characterbody.velocity.x) as float
|
var current_dir = sign(characterbody.velocity.x) as float
|
||||||
var accel: float
|
var accel: float = _get_acceleration(input_dir,current_dir)
|
||||||
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都是加速的加速度
|
|
||||||
|
|
||||||
#如果检测到当前速度和加速度方向不同,则发送移动方向更改event
|
#如果检测到当前速度和加速度方向不同,则发送移动方向更改event
|
||||||
if current_dir * input_dir < 0 and not _in_pivoting:
|
if current_dir * input_dir < 0 and not _in_pivoting:
|
||||||
|
|
@ -128,13 +123,31 @@ func _update_movement(delta : float) -> void:
|
||||||
_in_pivoting = false
|
_in_pivoting = false
|
||||||
|
|
||||||
var applyed_air_control = 1 if characterbody.is_on_floor() else air_control_mult
|
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()
|
_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:
|
func _handle_body_ground_state(delta: float) -> void:
|
||||||
if is_first_update:
|
if is_first_update:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue