Menu
CoddyTech

屏幕震动

本课属于 Coddy Godot 学习旅程的“游戏体验”单元。第 11 课,共 23 课。

屏幕震动可以标记一个重要时刻,比如跺脚或爆炸。在这一关中,E 会调用摄像机的 start_shake(),将 shake 设为 12。不过此时还不会移动。

Camera2D 有一个 offset,它是一个 Vector2,可以在不移动摄像机节点的情况下偏移视图。每帧生成一个新的随机偏移量,就能让视图震动。

offset = Vector2(randf_range(-shake, shake), randf_range(-shake, shake))

震动必须停止。每帧用 move_toward 让 shake 逐渐减小到 0,这样跳动幅度就会越来越小。

shake = move_toward(shake, 0.0, 30.0 * delta)

当 shake 达到 0 时,两个随机数都是 0,offset 也会恢复为 Vector2(0, 0)。

challenge icon

挑战

中等

机器人跺脚时,让屏幕震动。

  1. 在 _process 中,用 move_toward 按照 30.0 * delta 的幅度让 shake 趋近于 0。
  2. 将 offset 设置为一个 Vector2,其 x 和 y 的值分别在 -shake 到 shake 之间随机取值。

按“开始”,再按 E 跺脚:视图会震动,然后平稳下来。接着按“检查”。

亲手试试

extends Camera2D

var shake = 0.0

func _ready():
	limit_left = 0
	limit_top = 0
	limit_right = 1600
	limit_bottom = 360

func start_shake():
	shake = 12.0

func _process(delta):
	pass
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

游戏体验中的所有课

自己练习: Godot 在线编辑器