【U3D小游戏】愤怒的小鸟(六)小特效

举报
布小禅 发表于 2022/10/10 20:43:22 2022/10/10
【摘要】 自己做一下小时候玩的风靡一时的愤怒的小鸟这个游戏,相信有很多人都在某一段时间沉迷过这个游戏吧~~~~

@[toc]

前言

自己做一下小时候玩的风靡一时的愤怒的小鸟这个游戏,相信有很多人都在某一段时间沉迷过这个游戏吧~~~~

小鸟拖尾特效

使用一个别人的插件来完成:Pocket RPG Weapon Trails

先将该插件导入unity中,存放在网盘中的Scorce文件夹中,直接拖拽到Project即可。

  1. 给小鸟添加一个脚本,名字可以随意,内容如下

    /**
     * ==========================================
     * FileName:#FileName#
     * Author:#Name#
     * CreatTime:#CreateTime#
     * NowPath:#path#
     * ==========================================
     */
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class MyTrail : MonoBehaviour
    {
        public WeaponTrail myTrail;
    
        private float t = 0.033f;
        private float tempT = 0;
        private float animationIncrement = 0.003f;
    
        void Start()
        {
            // 默认没有拖尾效果
            myTrail.SetTime(0.0f, 0.0f, 1.0f);
        }
    
        /// <summary>
        /// 开启拖尾
        /// </summary>
        public void startTrail()
        {
            //设置拖尾时长
            myTrail.SetTime(2.0f, 0.0f, 1.0f);
            //开始进行拖尾
            myTrail.StartTrail(0.5f, 0.4f);
        }
    
        /// <summary>
        /// 关闭拖尾
        /// </summary>
        public void stopTrail()
        {
            //清除拖尾
            myTrail.ClearTrail();
        }
    
        void LateUpdate()
        {
            t = Mathf.Clamp(Time.deltaTime, 0, 0.066f);
    
            if (t > 0)
            {
                while (tempT < t)
                {
                    tempT += animationIncrement;
    
                    if (myTrail.time > 0)
                    {
                        myTrail.Itterate(Time.time - t + tempT);
                    }
                    else
                    {
                        myTrail.ClearTrail();
                    }
                }
    
                tempT -= t;
    
                if (myTrail.time > 0)
                {
                    myTrail.UpdateTrail(Time.time, t);
                }
            }
        }
    }
    
  2. 给小鸟添加一个子物体,空的,我命名为MyTrail

  3. 给这个子物体添加一个名字为WeaponTrails的脚本和Mesh Render组件

  4. 设置Mesh Render的材质为WeaponTrail的材质球

  5. MyTrail拖拽到小鸟新添加的脚本中

    在这里插入图片描述

  6. 修改小鸟脚本,使特效只在飞行中展现

    public class ColliderBird : MonoBehaviour
    {
        private MyTrail myTrail;
        
        private void Awake()
        {
            myTrail = GetComponent<MyTrail>();
        }
        void Power()
        {
            myTrail.startTrail();//开启拖尾特效
            sp2.enabled = false;//将束缚小鸟的弹簧禁用掉
            rightLine.enabled = false;
            leftLine.enabled = false;
            Invoke("NextBird", 2);//2秒后销毁小鸟
        }
        private void OnCollisionEnter2D(Collision2D collision)
        {
            myTrail.stopTrail();//关闭拖尾特效
        }
    }
    
  7. 然后就没有然后了,就完成了

  8. 效果展示

    在这里插入图片描述

胜利or失败界面

直接使用UI制作和按钮来实现跳转功能就完事了,很简单。

当然了,简单就意味着操作的重复性,所以会有一点麻烦。

  1. MENU_ELEMENTS_3BUTTONS图片切割

  2. 自己制作两个UI界面作为胜利和失败的UI界面

    在这里插入图片描述

    在这里插入图片描述

  3. 制作一点五毛钱特效,让逼格提升一点,渐变变黑,直接在最顶层的Image层Ctrl+6修改阿尔法值

  4. 给输赢添加跳转页面

    public class GameManager : MonoBehaviour
    {
        public GameObject win;
        public GameObject lose;
        public void NextBird()
        {
            if (pigs.Count > 0)
            {
                if (birds.Count < 0)
                {
                    //输了
                    //游戏结束
                    lose.SetActive(true);
                }
                else
                {
                    BirdSet();
                }
            }
            else
            {
                //赢了
                win.SetActive(true);
            }
        }
    }
    

    仅仅只需要在赢了和输了的判断中添加即可

赢了的效果:

在这里插入图片描述

输了的效果;

在这里插入图片描述

虽然不是很好看,但是方法和原理已经说了。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。