屏幕震动
本课属于 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)。
挑战
中等机器人跺脚时,让屏幕震动。
- 在
_process中,用move_toward按照30.0 * delta的幅度让shake趋近于 0。 - 将
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
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
游戏体验中的所有课
自己练习: Godot 在线编辑器