unity3d 残影效果

2015年01月20日 10:53 0 点赞 0 评论 更新于 2025-11-21 14:55

在 Unity 游戏中添加特效能够显著提升游戏的画面效果。本文将详细介绍一种特效——Unity 残影效果,并给出实现该效果的代码及相关说明。

实现代码

以下是实现残影效果的函数代码:

// 残影函数
// 参数说明:
// mc_id:残影 MC 的 ID
// mc_name:装载残影的 MC
// mc_name2:残影跟随的目标
// scale:残影比例
// start_alpha:开始透明度
// end_alpha:结束透明度
// alpha_red:透明度减量
// rb:红色偏移量
// gb:绿色偏移量
// bb:兰色偏移量
function shadow_effect(mc_id, mc_name, mc_name2, scale, start_alpha, end_alpha, alpha_red, rb, gb, bb) {
// 检查装载残影的 MC 是否有 dep 属性,若没有则初始化为 0
if (!mc_name.dep) {
mc_name.dep = 0;
}

// 降低透明度
for (i in mc_name) {
mc_name._alpha -= alpha_red;
// 当透明度小于结束透明度时,移除该残影
if (mc_name._alpha < end_alpha) {
mc_name.removeMovieClip();
}
}

// 加载残影并设置属性
mc_name.attachMovie(mc_id, mc_id + mc_name.dep, mc_name.dep);
mc_name[mc_id + mc_name.dep]._xscale = mc_name[mc_id + mc_name.dep]._yscale = scale;
mc_name[mc_id + mc_name.dep]._x = mc_name2._x;
mc_name[mc_id + mc_name.dep]._y = mc_name2._y;
mc_name[mc_id + mc_name.dep]._alpha = start_alpha;

// 颜色应用
mc_name[mc_id + mc_name.dep].col = new Color(mc_name[mc_id + mc_name.dep]);
mc_name[mc_id + mc_name.dep].col2 = new Object();
mc_name[mc_id + mc_name.dep].col2.rb = rb;
mc_name[mc_id + mc_name.dep].col2.gb = gb;
mc_name[mc_id + mc_name.dep].col2.bb = bb;
mc_name[mc_id + mc_name.dep].col.setTransform(mc_name[mc_id + mc_name.dep].col2);

mc_name.dep++;
// 为避免 dep 值过大,当 dep 大于 1000 时,将其重置为 0
if (mc_name.dep > 1000) {
mc_name.dep = 0;
}
}

代码使用说明

要实现残影效果,只需在每一帧都执行上述 shadow_effect 函数。其他代码可以用于处理方块跟随鼠标移动的逻辑。

注意事项

如果使用对象本身作为残影,且对象内部包含控制移动的代码,会导致残影和本体一起移动。为避免这种情况,建议复制一个相同的元件作为残影,或者使用其他合适的对象来实现残影效果。

作者信息

feifeila

feifeila

共发布了 3994 篇文章