← 全部概念
操作手感 / 12
屏幕震动
用一个冲击强度值驱动震动
交互演示
交互演示 · 移动指针或点击画面,观察变化
屏幕震动会在命中后移动镜头,由 0 到 1 之间的冲击强度值 trauma 驱动。每次命中都会提高该值,它会在约一秒内回落至 0。右侧画面的震动量等于 trauma 的平方乘以平滑噪声,因此两次轻击只移动几像素,重击则移动较远。左侧直接使用 trauma,并在每帧生成新的随机偏移,所以每次命中都会显得抖动生硬。
适用场景
通过短暂、逐渐衰减的震动传达冲击感。将震动应用于仅影响画面的镜头偏移,避免改变实际瞄准、碰撞检测或镜头持续跟随的基准位置。
实现示例
不依赖特定引擎的伪代码。请根据你使用的引擎调整函数和坐标约定。
trauma = clamp(trauma + impact, 0, 1)
trauma = max(0, trauma - decay * dt)
amplitude = trauma * trauma
cameraOffset.x = noise(time * frequency) * maxOffset * amplitude常见错误
不要把随机偏移不断累加到镜头的基准位置上。应相对于一个稳定的位姿施加震动,并提供减少动态效果或调整震动强度的设置。
内容原作 Nicolas Zullo · 中文整理与交互改编