diff --git a/scene/ground/camera/camera_focus_marker.gd b/scene/ground/camera/camera_focus_marker.gd index 4ccd5c18..ef06db3d 100644 --- a/scene/ground/camera/camera_focus_marker.gd +++ b/scene/ground/camera/camera_focus_marker.gd @@ -17,9 +17,12 @@ var shake_ignore_boundary := false func _ready() -> void: + reset_speed() if not focusing_node: push_error("Focusing node not found") +func reset_speed() -> void: + speed = 2.0 func shake_camera(strength := 6.0, recovery_speed := 2.0, ignore_boundary := true): shake_strength = strength @@ -68,7 +71,7 @@ func _physics_process(delta: float) -> void: # handle shake if shake_strength > 0.0: # 让 shake_strength 逐帧衰减 - shake_recovery_speed = min(0.1, shake_recovery_speed) + shake_recovery_speed = max(0.1, shake_recovery_speed) shake_strength = lerpf(shake_strength, 0.0, shake_recovery_speed * delta) # [-shake_strength, +shake_strength] 范围内的同时,尽可能偏离中心 # 在 0 – 2π 之间随机一个方向,在 _last_shake_angle 的对角范围 diff --git a/scene/ground/scene/c02/s08_瞎子卧室.gd b/scene/ground/scene/c02/s08_瞎子卧室.gd index 35a346fc..af41f665 100644 --- a/scene/ground/scene/c02/s08_瞎子卧室.gd +++ b/scene/ground/scene/c02/s08_瞎子卧室.gd @@ -168,14 +168,16 @@ func look_back_hole(): var laizi = $"../DeployLayer/癞子偷窥" laizi.visible = true var camera = SceneManager.get_camera_marker() as CameraFocusMarker + # 保证 camera 可以紧跟着运行 + camera.speed = 100.0 # 去掉洞口中间遮挡 var occluder = $"../AmbientLayer/下洞口Occluder/LightOccluder2DMid" var tween = create_tween() tween.tween_interval(0.4) # 镜头右侧 limit 设置到 room_camera_r_limit + 100 - tween.tween_property(camera, "limit_right", room_camera_r_limit + 100, 1.0) - tween.parallel().tween_property(camera, "zoom_ratio", 1.1, 1.0) - tween.tween_callback(func(): occluder.visible = false) + tween.tween_property(camera, "zoom_ratio", 1.1, 1.0) + tween.parallel().tween_property(camera, "limit_right", room_camera_r_limit + 100, 1.5) + tween.tween_callback(occluder.hide) tween.tween_interval(0.5) tween.tween_callback($"Sfx癞子对视惊吓".play) tween.tween_interval(0.5) @@ -183,7 +185,7 @@ func look_back_hole(): tween.tween_property(darker_light, "energy", 1.0, 3.0) tween.tween_property(camera, "limit_right", room_camera_r_limit, 1.0) tween.parallel().tween_property(camera, "zoom_ratio", 1.0, 1.0) - + tween.tween_callback(camera.reset_speed) func _on_shocked(): SceneManager.pop_debug_dialog_info("音效", "惊吓")