unity3d怎么用代码实现缩放粒子特效?
请教如何用程序实现缩放粒子特效大小 我也被这个问题困扰了好久...今天终于解决了...其实没必要那么麻烦挂脚本的...有人提到了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就行了 最好保持数值一致
老天啊,赶紧让我写完作业吧.... 可以参考fxmaker,带有 我用的Xffect 粒子插件,这个插件参考ogre的粒子系统做的,只需要设置一个全局参数就可以缩放整个粒子效果。参考这个视频:
http://www.jikexueyuan.com/course/2058.html 我们的做法比较简单:
/// <summary>
/// 缩放粒子
/// </summary>
/// <param name=&#34;gameObj&#34;>粒子节点</param>
/// <param name=&#34;scale&#34;>绽放系数</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;
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);
}
} 缩放粒子发射半径 粒子数
页:
[1]