2017-06-04 09:39:18 six_sex 阅读数 24731

一个简单的爆炸效果的实现。

先看效果。
爆炸效果

一、准备四张贴图,做成材质
这里写图片描述

这里写图片描述
二、新建一个Particle System
1. 设置形状
这里写图片描述
2.
这里写图片描述
3.
这里写图片描述
4.
这里写图片描述
5.
这里写图片描述
6.
这里写图片描述
7.
这里写图片描述
8. 曲线的第二个点往上提一点点
这里写图片描述
9.
这里写图片描述
10.
这里写图片描述
11.
这里写图片描述
目前效果像这样

这里写图片描述
三、在当前粒子下面在新建一个粒子系统
1.取消looping
这里写图片描述
2.
这里写图片描述
3.
这里写图片描述
4.
这里写图片描述
5.
这里写图片描述
6.
这里写图片描述
7.
这里写图片描述

这里写图片描述

8.
这里写图片描述
9.
这里写图片描述
10.
这里写图片描述
11. 打开子发射器
这里写图片描述
12.选中子发射器修改参数
这里写图片描述
12.1
这里写图片描述
12.2
这里写图片描述
12.3
这里写图片描述
12.4
这里写图片描述
12.5
这里写图片描述
12.6
这里写图片描述
12.7
这里写图片描述
目前为止效果大概是这样的:
这里写图片描述
13.回到上一层发射器
这里写图片描述
13.1给他们改个名字
这里写图片描述
13.2修改“黑色碎片”的参数
这里写图片描述
14.选中“爆炸火花”给他再添加一个粒子系统,改个名
这里写图片描述
14.1
这里写图片描述
14.2
这里写图片描述
14.3
这里写图片描述
14.4
这里写图片描述

15.选中“爆炸火花”给他再添加一个粒子系统,改个名
这里写图片描述
15.1
这里写图片描述
15.2
这里写图片描述
15.3
这里写图片描述
15.4
这里写图片描述
15.5
这里写图片描述
15.6
这里写图片描述
15.7

这里写图片描述
16.1选中“爆炸”(原名爆炸火花,最外层的粒子系统) 改变时长
这里写图片描述

16.2最后把他们所有的looping(循环)给关掉

效果是这样的

这里写图片描述

感谢收看,再见!
2017年6月4日09:37:43

对了,package在这
链接: https://pan.baidu.com/s/1boJrp1t 密码: v9ku

2019-09-18 17:43:10 ls9512 阅读数 39

Unity 中的 Animation 组件播放动画时,依赖 Time.deltaTime 进行采样计算播放进度,如果游戏中改变了 timeScale 的值,则使用 Animation 制作动画也会受到影响,例如游戏胜利时的慢动作特写镜头,如果是依赖 timeScale 实现的,那么此时 UI 上的动画效果也都会一起变慢。

Animation 组件与粒子系统类似,通过每一帧采样播放,查看源码可以看到如下接口:

    /// <summary>
    ///   <para>Samples animations at the current state.</para>
    /// </summary>
    public void Sample()
    {
      Animation.INTERNAL_CALL_Sample(this);
    }

因此只需要制作一个组件,在动画播放时,每一帧使用非缩放时间重新计算动画的播放进度,并采样播放,直接给出代码如下:

    [RequireComponent(typeof(Animation))]
    public class RealTimeAnimation : MonoBehaviour
    {
        public Animation Animation { get; set; }

        public void Awake()
        {
            Animation = GetComponent<Animation>();
            IsPlaying = false;
        }

        private float _lastFrameTime;
        private float _currentTime;
        private float _progressTime;

        public bool IsPlaying { get; set; }

        public void OnEnable()
        {
            if (Animation.playAutomatically)
            {
                Play();
            }
        }

        public void Play()
        {
            _progressTime = 0f;
            _lastFrameTime = Time.realtimeSinceStartup;
            IsPlaying = true;
        }

        public void Update()
        {
            if (!IsPlaying) return;
            var clip = Animation.clip;
            var state = Animation[clip.name];
            _currentTime = Time.realtimeSinceStartup;
            var deltaTime = _currentTime - _lastFrameTime;
            _lastFrameTime = _currentTime;
            _progressTime += deltaTime * state.speed;
            state.normalizedTime = _progressTime / clip.length;
            Animation.Sample();
            if (_progressTime >= clip.length)
            {
                IsPlaying = false;
            }
        }
    }

1.当动画勾选自动播放 PlayAutomatically时,则会自动调用Play()接口进行播放。
2.每一帧的时间为非缩放的两帧时间间隔,并且乘上动画片段本身设置的播放倍速。
3.默认实现仅自动播放一次,适用于UI打开等一次性自动触发的动画,其他播放模式自行按需修改。

2016-07-01 11:19:21 qq_22780533 阅读数 3063
这两天遇到项目在编辑器上运行有100多帧,然而发布到安卓上却只有2帧!于是上网各种搜索资料,进行各种尝试。
  •  关闭照相机上的后期屏幕渲染特效,将安卓质量级别中的beautiful和fantasity的勾选去掉,在安卓上运行从2帧提高到了10帧左右
  • 项目中材质的Shader默认都是Standard,Standard让材质有PBS效果(别问我PBS是什么,其实我也不知道),但是在移动平台上会带来更大的消耗,将材质shader改成Mobile(Legacy对性能消耗也小,不过我还没试)后,帧数提高到了18帧
     在搜索的过程中,我发现了不少人也跟我一样遇到了相同的问题,无论是5.3版本的空场景,还是原本5.2或者4.X版本升级到5.3版本的项目,发布到安卓平台后,帧数就降到很低。所以大招在最后,这是unity5.3版本的一个bug,如今5.3.5已经修复此问题。。。
没有更多推荐了,返回首页