优化癞子偷窥运镜

This commit is contained in:
cakipaul 2025-07-06 23:07:08 +08:00
parent 096b7dc25c
commit b7f7c2a752
2 changed files with 10 additions and 5 deletions

View File

@ -17,9 +17,12 @@ var shake_ignore_boundary := false
func _ready() -> void: func _ready() -> void:
reset_speed()
if not focusing_node: if not focusing_node:
push_error("Focusing node not found") 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): func shake_camera(strength := 6.0, recovery_speed := 2.0, ignore_boundary := true):
shake_strength = strength shake_strength = strength
@ -68,7 +71,7 @@ func _physics_process(delta: float) -> void:
# handle shake # handle shake
if shake_strength > 0.0: if shake_strength > 0.0:
# 让 shake_strength 逐帧衰减 # 让 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 = lerpf(shake_strength, 0.0, shake_recovery_speed * delta)
# [-shake_strength, +shake_strength] 范围内的同时,尽可能偏离中心 # [-shake_strength, +shake_strength] 范围内的同时,尽可能偏离中心
# 在 0 2π 之间随机一个方向,在 _last_shake_angle 的对角范围 # 在 0 2π 之间随机一个方向,在 _last_shake_angle 的对角范围

View File

@ -168,14 +168,16 @@ func look_back_hole():
var laizi = $"../DeployLayer/癞子偷窥" var laizi = $"../DeployLayer/癞子偷窥"
laizi.visible = true laizi.visible = true
var camera = SceneManager.get_camera_marker() as CameraFocusMarker var camera = SceneManager.get_camera_marker() as CameraFocusMarker
# 保证 camera 可以紧跟着运行
camera.speed = 100.0
# 去掉洞口中间遮挡 # 去掉洞口中间遮挡
var occluder = $"../AmbientLayer/下洞口Occluder/LightOccluder2DMid" var occluder = $"../AmbientLayer/下洞口Occluder/LightOccluder2DMid"
var tween = create_tween() var tween = create_tween()
tween.tween_interval(0.4) tween.tween_interval(0.4)
# 镜头右侧 limit 设置到 room_camera_r_limit + 100 # 镜头右侧 limit 设置到 room_camera_r_limit + 100
tween.tween_property(camera, "limit_right", room_camera_r_limit + 100, 1.0) tween.tween_property(camera, "zoom_ratio", 1.1, 1.0)
tween.parallel().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(func(): occluder.visible = false) tween.tween_callback(occluder.hide)
tween.tween_interval(0.5) tween.tween_interval(0.5)
tween.tween_callback($"Sfx癞子对视惊吓".play) tween.tween_callback($"Sfx癞子对视惊吓".play)
tween.tween_interval(0.5) 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(darker_light, "energy", 1.0, 3.0)
tween.tween_property(camera, "limit_right", room_camera_r_limit, 1.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.parallel().tween_property(camera, "zoom_ratio", 1.0, 1.0)
tween.tween_callback(camera.reset_speed)
func _on_shocked(): func _on_shocked():
SceneManager.pop_debug_dialog_info("音效", "惊吓") SceneManager.pop_debug_dialog_info("音效", "惊吓")