player freeze status fix
This commit is contained in:
parent
4f50d8c668
commit
85c931d334
@ -14,7 +14,7 @@ static var user_root_dir := "user://data/" # must end with "/"
|
|||||||
static var archive_dir := "user://data/archives/"
|
static var archive_dir := "user://data/archives/"
|
||||||
static var archive_prefix := "save"
|
static var archive_prefix := "save"
|
||||||
|
|
||||||
const CURRENT_VERSION = 3
|
const CURRENT_VERSION = 4
|
||||||
|
|
||||||
var archives := {}
|
var archives := {}
|
||||||
var autosave_timer := Timer.new()
|
var autosave_timer := Timer.new()
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
class_name GlobalConfig extends Resource
|
class_name GlobalConfig extends Resource
|
||||||
|
|
||||||
#const DEBUG = true
|
const DEBUG = true
|
||||||
const DEBUG = false
|
#const DEBUG = false
|
||||||
|
|
||||||
# .res would be binary encoded, .tres is text encoded
|
# .res would be binary encoded, .tres is text encoded
|
||||||
const RES_FILE_FORMAT = ".tres"
|
const RES_FILE_FORMAT = ".tres"
|
||||||
@ -67,8 +67,8 @@ signal auto_save_seconds_changed
|
|||||||
auto_save_seconds = val
|
auto_save_seconds = val
|
||||||
auto_save_seconds_changed.emit()
|
auto_save_seconds_changed.emit()
|
||||||
# window
|
# window
|
||||||
@export var window_fullscreen := false
|
@export var window_fullscreen := true
|
||||||
@export var window_top := true
|
@export var window_top := false
|
||||||
# sound
|
# sound
|
||||||
@export var db_master := -3.0 # default
|
@export var db_master := -3.0 # default
|
||||||
@export var db_dialog := -13.0 # default
|
@export var db_dialog := -13.0 # default
|
||||||
|
@ -281,11 +281,12 @@ func _on_freeze_changed(count: int, is_add: bool):
|
|||||||
|
|
||||||
# 非首次 freeze 不改变动画状态,因为在动画演出中可能多次 freeze 与 release
|
# 非首次 freeze 不改变动画状态,因为在动画演出中可能多次 freeze 与 release
|
||||||
func _on_first_frozen() -> void:
|
func _on_first_frozen() -> void:
|
||||||
|
if GlobalConfig.DEBUG:
|
||||||
|
print("player _on_first_frozen. current_status=", current_status)
|
||||||
# reset status to idle or stay
|
# reset status to idle or stay
|
||||||
velocity = Vector2.ZERO
|
velocity = Vector2.ZERO
|
||||||
if current_status != PlayerAnimationConfig.MOVEMENT_IDLE:
|
current_status = PlayerAnimationConfig.MOVEMENT_IDLE
|
||||||
current_status = PlayerAnimationConfig.MOVEMENT_IDLE
|
_play_animation()
|
||||||
|
|
||||||
|
|
||||||
# duration: the time to lock the player action. 0 means lock forever, thus the player will be locked until release_player is called.
|
# duration: the time to lock the player action. 0 means lock forever, thus the player will be locked until release_player is called.
|
||||||
func freeze_player(duration: float, action_code: int, auto_quit: bool) -> void:
|
func freeze_player(duration: float, action_code: int, auto_quit: bool) -> void:
|
||||||
@ -501,5 +502,6 @@ func walk_to(global_pos: Vector2) -> Tween:
|
|||||||
|
|
||||||
|
|
||||||
func _after_walk_to() -> void:
|
func _after_walk_to() -> void:
|
||||||
SceneManager.unlock_player()
|
current_status = PlayerAnimationConfig.MOVEMENT_IDLE
|
||||||
_play_animation()
|
_play_animation()
|
||||||
|
SceneManager.unlock_player()
|
||||||
|
@ -91,6 +91,9 @@ func _on_ambush_triggered():
|
|||||||
# 鸡毛掸子 4.5s,再等待 3s 后掉落纸片
|
# 鸡毛掸子 4.5s,再等待 3s 后掉落纸片
|
||||||
get_tree().create_timer(8).timeout.connect(_play_paper_animation)
|
get_tree().create_timer(8).timeout.connect(_play_paper_animation)
|
||||||
|
|
||||||
|
func lock_on_use_stick():
|
||||||
|
SceneManager.lock_player(4.0)
|
||||||
|
SceneManager.get_player().walk_to_x(261.0)
|
||||||
|
|
||||||
func _play_paper_animation():
|
func _play_paper_animation():
|
||||||
# 播放纸片动画
|
# 播放纸片动画
|
||||||
|
@ -449,137 +449,109 @@ resource_name = "使用鸡毛掸子"
|
|||||||
length = 4.5
|
length = 4.5
|
||||||
step = 0.02
|
step = 0.02
|
||||||
capture_included = true
|
capture_included = true
|
||||||
tracks/0/type = "method"
|
tracks/0/type = "value"
|
||||||
tracks/0/imported = false
|
tracks/0/imported = false
|
||||||
tracks/0/enabled = true
|
tracks/0/enabled = true
|
||||||
tracks/0/path = NodePath("MainPlayer")
|
tracks/0/path = NodePath("DeployLayer/画框:rotation")
|
||||||
tracks/0/interp = 1
|
tracks/0/interp = 1
|
||||||
tracks/0/loop_wrap = true
|
tracks/0/loop_wrap = true
|
||||||
tracks/0/keys = {
|
tracks/0/keys = {
|
||||||
"times": PackedFloat32Array(0.02),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"values": [{
|
|
||||||
"args": [4.0, -1, true],
|
|
||||||
"method": &"freeze_player"
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
tracks/1/type = "value"
|
|
||||||
tracks/1/imported = false
|
|
||||||
tracks/1/enabled = true
|
|
||||||
tracks/1/path = NodePath("DeployLayer/画框:rotation")
|
|
||||||
tracks/1/interp = 1
|
|
||||||
tracks/1/loop_wrap = true
|
|
||||||
tracks/1/keys = {
|
|
||||||
"times": PackedFloat32Array(1.8, 1.98, 2.24, 2.42, 2.58, 2.76),
|
"times": PackedFloat32Array(1.8, 1.98, 2.24, 2.42, 2.58, 2.76),
|
||||||
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
|
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
|
||||||
"update": 0,
|
"update": 0,
|
||||||
"values": [-0.179974, -0.124821, -0.124821, -0.051063, -0.051063, 0.0]
|
"values": [-0.179974, -0.124821, -0.124821, -0.051063, -0.051063, 0.0]
|
||||||
}
|
}
|
||||||
tracks/2/type = "value"
|
tracks/1/type = "value"
|
||||||
tracks/2/imported = false
|
tracks/1/imported = false
|
||||||
tracks/2/enabled = true
|
tracks/1/enabled = true
|
||||||
tracks/2/path = NodePath("DeployLayer/使用鸡毛掸子:frame")
|
tracks/1/path = NodePath("DeployLayer/使用鸡毛掸子:frame")
|
||||||
tracks/2/interp = 1
|
tracks/1/interp = 1
|
||||||
tracks/2/loop_wrap = true
|
tracks/1/loop_wrap = true
|
||||||
tracks/2/keys = {
|
tracks/1/keys = {
|
||||||
"times": PackedFloat32Array(1.04, 3.78),
|
"times": PackedFloat32Array(1.04, 3.78),
|
||||||
"transitions": PackedFloat32Array(1, 1),
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
"update": 2,
|
"update": 2,
|
||||||
"values": [0, 11]
|
"values": [0, 11]
|
||||||
}
|
}
|
||||||
tracks/3/type = "value"
|
tracks/2/type = "value"
|
||||||
tracks/3/imported = false
|
tracks/2/imported = false
|
||||||
tracks/3/enabled = true
|
tracks/2/enabled = true
|
||||||
tracks/3/path = NodePath("DeployLayer/使用鸡毛掸子:position")
|
tracks/2/path = NodePath("DeployLayer/使用鸡毛掸子:position")
|
||||||
tracks/3/interp = 1
|
tracks/2/interp = 1
|
||||||
tracks/3/loop_wrap = false
|
tracks/2/loop_wrap = false
|
||||||
tracks/3/keys = {
|
tracks/2/keys = {
|
||||||
"times": PackedFloat32Array(0.88, 3.96),
|
"times": PackedFloat32Array(0.88, 3.96),
|
||||||
"transitions": PackedFloat32Array(1, 1),
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
"update": 0,
|
"update": 0,
|
||||||
"values": [Vector2(261, 42), Vector2(261, 42)]
|
"values": [Vector2(261, 42), Vector2(261, 42)]
|
||||||
}
|
}
|
||||||
tracks/4/type = "value"
|
tracks/3/type = "value"
|
||||||
tracks/4/imported = false
|
tracks/3/imported = false
|
||||||
tracks/4/enabled = true
|
tracks/3/enabled = true
|
||||||
tracks/4/path = NodePath("DeployLayer/使用鸡毛掸子:visible")
|
tracks/3/path = NodePath("DeployLayer/使用鸡毛掸子:visible")
|
||||||
tracks/4/interp = 1
|
tracks/3/interp = 1
|
||||||
tracks/4/loop_wrap = true
|
tracks/3/loop_wrap = true
|
||||||
tracks/4/keys = {
|
tracks/3/keys = {
|
||||||
"times": PackedFloat32Array(0.88, 3.96),
|
"times": PackedFloat32Array(0.88, 3.96),
|
||||||
"transitions": PackedFloat32Array(1, 1),
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [true, false]
|
"values": [true, false]
|
||||||
}
|
}
|
||||||
tracks/5/type = "value"
|
tracks/4/type = "value"
|
||||||
tracks/5/imported = false
|
tracks/4/imported = false
|
||||||
tracks/5/enabled = true
|
tracks/4/enabled = true
|
||||||
tracks/5/path = NodePath("DeployLayer/ambush鸡毛掸子:visible")
|
tracks/4/path = NodePath("DeployLayer/ambush鸡毛掸子:visible")
|
||||||
tracks/5/interp = 1
|
tracks/4/interp = 1
|
||||||
tracks/5/loop_wrap = true
|
tracks/4/loop_wrap = true
|
||||||
tracks/5/keys = {
|
tracks/4/keys = {
|
||||||
"times": PackedFloat32Array(0.02, 1.48, 3.42),
|
"times": PackedFloat32Array(0.02, 1.48, 3.42),
|
||||||
"transitions": PackedFloat32Array(1, 1, 1),
|
"transitions": PackedFloat32Array(1, 1, 1),
|
||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [true, false, true]
|
"values": [true, false, true]
|
||||||
}
|
}
|
||||||
tracks/6/type = "method"
|
tracks/5/type = "value"
|
||||||
tracks/6/imported = false
|
tracks/5/imported = false
|
||||||
tracks/6/enabled = true
|
tracks/5/enabled = true
|
||||||
tracks/6/path = NodePath("MainPlayer")
|
tracks/5/path = NodePath("CameraFocusMarker:zoom_ratio")
|
||||||
tracks/6/interp = 1
|
tracks/5/interp = 1
|
||||||
tracks/6/loop_wrap = true
|
tracks/5/loop_wrap = true
|
||||||
tracks/6/keys = {
|
tracks/5/keys = {
|
||||||
"times": PackedFloat32Array(0.08),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"values": [{
|
|
||||||
"args": [Vector2(261, 88)],
|
|
||||||
"method": &"walk_to"
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
tracks/7/type = "value"
|
|
||||||
tracks/7/imported = false
|
|
||||||
tracks/7/enabled = true
|
|
||||||
tracks/7/path = NodePath("CameraFocusMarker:zoom_ratio")
|
|
||||||
tracks/7/interp = 1
|
|
||||||
tracks/7/loop_wrap = true
|
|
||||||
tracks/7/keys = {
|
|
||||||
"times": PackedFloat32Array(0, 1.22, 3.1, 4.1),
|
"times": PackedFloat32Array(0, 1.22, 3.1, 4.1),
|
||||||
"transitions": PackedFloat32Array(1, 1, 1, 1),
|
"transitions": PackedFloat32Array(1, 1, 1, 1),
|
||||||
"update": 0,
|
"update": 0,
|
||||||
"values": [1.0, 1.3, 1.3, 1.0]
|
"values": [1.0, 1.3, 1.3, 1.0]
|
||||||
}
|
}
|
||||||
tracks/8/type = "value"
|
tracks/6/type = "value"
|
||||||
tracks/8/imported = false
|
tracks/6/imported = false
|
||||||
tracks/8/enabled = true
|
tracks/6/enabled = true
|
||||||
tracks/8/path = NodePath("CameraFocusMarker:force_offset")
|
tracks/6/path = NodePath("CameraFocusMarker:force_offset")
|
||||||
tracks/8/interp = 1
|
tracks/6/interp = 1
|
||||||
tracks/8/loop_wrap = true
|
tracks/6/loop_wrap = true
|
||||||
tracks/8/keys = {
|
tracks/6/keys = {
|
||||||
"times": PackedFloat32Array(0, 4.08),
|
"times": PackedFloat32Array(0, 4.08),
|
||||||
"transitions": PackedFloat32Array(1, 1),
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
"update": 0,
|
"update": 0,
|
||||||
"values": [Vector2(0, -20), Vector2(0, -20)]
|
"values": [Vector2(0, -20), Vector2(0, -20)]
|
||||||
}
|
}
|
||||||
tracks/9/type = "value"
|
tracks/7/type = "value"
|
||||||
tracks/9/imported = false
|
tracks/7/imported = false
|
||||||
tracks/9/enabled = true
|
tracks/7/enabled = true
|
||||||
tracks/9/path = NodePath("AnimationPlayer/扶正相框:playing")
|
tracks/7/path = NodePath("AnimationPlayer/扶正相框:playing")
|
||||||
tracks/9/interp = 1
|
tracks/7/interp = 1
|
||||||
tracks/9/loop_wrap = true
|
tracks/7/loop_wrap = true
|
||||||
tracks/9/keys = {
|
tracks/7/keys = {
|
||||||
"times": PackedFloat32Array(0, 2.28),
|
"times": PackedFloat32Array(0, 2.28),
|
||||||
"transitions": PackedFloat32Array(1, 1),
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [false, true]
|
"values": [false, true]
|
||||||
}
|
}
|
||||||
tracks/10/type = "value"
|
tracks/8/type = "value"
|
||||||
tracks/10/imported = false
|
tracks/8/imported = false
|
||||||
tracks/10/enabled = true
|
tracks/8/enabled = true
|
||||||
tracks/10/path = NodePath("MainPlayer:hide_sprite")
|
tracks/8/path = NodePath("MainPlayer:hide_sprite")
|
||||||
tracks/10/interp = 1
|
tracks/8/interp = 1
|
||||||
tracks/10/loop_wrap = true
|
tracks/8/loop_wrap = true
|
||||||
tracks/10/keys = {
|
tracks/8/keys = {
|
||||||
"times": PackedFloat32Array(0.94, 3.98),
|
"times": PackedFloat32Array(0.94, 3.98),
|
||||||
"transitions": PackedFloat32Array(1, 1),
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
"update": 1,
|
"update": 1,
|
||||||
@ -783,6 +755,7 @@ position = Vector2(270, 23.5)
|
|||||||
texture = ExtResource("12_jtglg")
|
texture = ExtResource("12_jtglg")
|
||||||
trigger_mode = "interact"
|
trigger_mode = "interact"
|
||||||
hook_animation = "使用鸡毛掸子"
|
hook_animation = "使用鸡毛掸子"
|
||||||
|
hook_method = "lock_on_use_stick"
|
||||||
|
|
||||||
[node name="使用鸡毛掸子" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="7"]
|
[node name="使用鸡毛掸子" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="7"]
|
||||||
visible = false
|
visible = false
|
||||||
|
Loading…
Reference in New Issue
Block a user