找回密码
 立即注册
查看: 298|回复: 5

[笔记] unity3d怎么用代码实现缩放粒子特效?

[复制链接]
发表于 2023-2-14 15:58 | 显示全部楼层 |阅读模式
请教如何用程序实现缩放粒子特效大小
发表于 2023-2-14 16:08 | 显示全部楼层
我也被这个问题困扰了好久...今天终于解决了...其实没必要那么麻烦挂脚本的...
有人提到了ParticleScaler插件,这个只能非运行状态下起作用,一旦运行就没用了。
修改一下粒子系统里面的参数就好了。
Scaling Mode只要不是shape就行,改成hierarchy或者local就可以。asset store里的粒子特效貌似都是默认的shape。


演示一下,这是一段闪电粒子特效。


按照上述把scaling mode都给改了。


可以直接在父物体上修改scale,没必要每个子物体都改,我把scale三个值都改成4。这个修改是每一个子物体都发生了相应变化的。


如果想放大后不糊,最好把用到的图片模式改成point(no filter)这个。放大四倍效果如下。


脚本里修改scale就简单了
transform.localScale = new Vector3(x,y,z);
xyz为倍数 2d视角下只修改xz就行了 最好保持数值一致

老天啊,赶紧让我写完作业吧....

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2023-2-14 16:11 | 显示全部楼层
可以参考fxmaker,带有
发表于 2023-2-14 16:12 | 显示全部楼层
我用的Xffect 粒子插件,这个插件参考ogre的粒子系统做的,只需要设置一个全局参数就可以缩放整个粒子效果。参考这个视频:
http://www.jikexueyuan.com/course/2058.html
发表于 2023-2-14 16:18 | 显示全部楼层
我们的做法比较简单:
    /// <summary>
    /// 缩放粒子
    /// </summary>
    /// <param name="gameObj">粒子节点</param>
    /// <param name="scale">绽放系数</param>
    public static void ScaleParticleSystem(GameObject gameObj, float scale)
    {
        var hasParticleObj = false;
        var particles = gameObj.GetComponentsInChildren<ParticleSystem>(true);
        var max = particles.Length;
        for (int idx = 0; idx < max; idx++)
        {
            var particle = particles[idx];
            if(particle==null) continue;
            hasParticleObj = true;
            particle.startSize *= scale;
            particle.startSpeed *= scale;
            particle.startRotation *= scale;
            particle.transform.localScale *= scale;
        }
        if (hasParticleObj)
        {
            gameObj.transform.localScale = new Vector3(scale, scale, 1);
        }
    }
发表于 2023-2-14 16:21 | 显示全部楼层
缩放粒子发射半径 粒子数
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-4-27 22:25 , Processed in 0.094402 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表