优化癞子偷窥运镜
This commit is contained in:
parent
096b7dc25c
commit
b7f7c2a752
@ -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 的对角范围
|
||||||
|
@ -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("音效", "惊吓")
|
||||||
|
Loading…
Reference in New Issue
Block a user