效果
主动与被动
快速入门(一个简单的定时效果)
Apple_Pop_Effect :: class : Effect_Base {
sprite: Sprite_Renderer;
start_scale: v2;
start_pos: v2;
effect_start :: method() {
sprite = entity.get_component(Sprite_Renderer);
start_scale = entity.local_scale;
start_pos = entity.local_position;
set_duration(0.4); // 0.4 秒后自动移除
}
effect_update :: method(dt: float) {
t := get_elapsed_time() / 0.4;
// 先放大,然后缩小至消失
scale_curve: float;
if t < 0.3 {
scale_curve = lerp(1.0, 1.3, Ease.out_back(t / 0.3));
} else {
scale_curve = lerp(1.3, 0.0, Ease.in_back((t - 0.3) / 0.7));
}
entity.set_local_scale(start_scale * scale_curve);
// 稍微向上漂浮
rise := Ease.out_quad(t) * 0.5;
entity.set_local_position({start_pos.x, start_pos.y + rise});
// 在接近结尾时淡出
if sprite != null {
alpha := 1.0 - Ease.in_quad(max(0.0, (t - 0.5) / 0.5));
sprite.color.w = alpha;
}
}
effect_end :: method(interrupt: bool) {
// 完成时(或被中断时)进行清理
entity.destroy();
}
}效果生命周期
主动效果(独占控制)
被动效果(可叠加增益 / 状态)
API 参考
Effect_Base
应用 / 移除效果
检查 / 遍历效果
freeze_player 与 disable_movement_inputs
玩家表情动作
效果示例
冲刺 / 翻滚(主动效果)
无敌窗口(被动效果)
数秒内变为 2 倍大小(被动效果)
死亡 / 重生序列(带本地 UI 的主动效果)
过场动画锁定(主动效果)
平滑的自定义视觉效果
最佳实践
最后更新于