【U3D小游戏】愤怒的小鸟(五)修复以及特效

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

前言

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

6. 解决弹弓和小鸟问题

小鸟飞出后,皮筋没有消失,小鸟弹入弹弓后力度过大,摇摆幅度大。

方法:小鸟飞出后,禁用画线组件,等下一次小鸟再启用

将第一只小鸟的位置保存,飞出后将第一只小鸟的位置赋值给后面的小鸟

在小鸟脚本中飞出后禁用画线组件,在画线之前启用

public class ColliderBird : MonoBehaviour
{
    void Power()
    {
        
        sp2.enabled = false;//将束缚小鸟的弹簧禁用掉
        rightLine.enabled = false;
        leftLine.enabled = false;
        Invoke("NextBird", 2);//2秒后销毁小鸟
    }
    void Line()
    {
        rightLine.enabled = true;
        leftLine.enabled = true;

        leftLine.SetPosition(0, leftPoint.position);//确定线段的第一个点
        leftLine.SetPosition(1, transform.position);//确定线段的第二个点

        rightLine.SetPosition(0, rightPoint.position);
        rightLine.SetPosition(1, transform.position);
    }
}

在管理类中记录初始小鸟的位置,并在第一个销毁后赋值给下一只

public class GameManager : MonoBehaviour
{
    public Vector3 birdPostion;
    private void Awake()
    {
        _instance = this;
        birdPostion = birds[0].transform.position;//初始化位置
    }
    public void BirdSet()
    {
        for (int i = 0; i < birds.Count; i++)
        {
            if (i == 0)
            {
                birds[i].transform.position = birdPostion;//将坐标矫正
                // 第一个小鸟,弹簧和脚本组件启用
                birds[i].enabled = true;
                birds[i].sp2.enabled = true; //这里需要将我们之前设置的弹簧组件设置成public,否则无法访问
            }
            else
            {
                //后面的小鸟禁用
                birds[i].enabled = false;
                birds[i].sp2.enabled = false;
            }
        }
    }
}

六、特效制作

把小鸟和猪的相关特效制作一下吧

1. 死亡特效

其实就是通过帧动画来实现特效,通过图集的图片的切换,来让玩家看起来像死亡的特效

我实在图集里面找的图片来实现的在这里插入图片描述

实现结果:

在这里插入图片描述

如果不会制作帧动画的话,建议去我的动画专栏学习一下,很简单的

然后将这个动画制作成预制体,以便于我们的小鸟和小猪都能使用

  1. 创建预制体文件夹Prefabs
  2. 将这个动画承载的游戏对象拖拽到文件夹里面即可

2. 加分特效

小猪死亡,我们获得加分。

这个就比较容易了,我们只需要将加分的图集制作成一个预制体即可。

直接将加分的图片拖拽到Hierarchy里面。

在这里插入图片描述

这个就不错,就它了

当然了,为了美观,我也给他添加了一个小小的动画,先变大,然后再消失

在这里插入图片描述

好了,变成预制体

3. 为小猪和小鸟添加五毛钱特效

特效制作好了,就该添加给我们的主角了

小鸟:

public class ColliderBird : MonoBehaviour{
	//先
    public GameObject boom;
    //再在销毁的函数里面实例化boom
    /// <summary>
    /// 销毁小鸟并处理下一只小鸟
    /// </summary>
    void NextBird()
    {
        GameManager._instance.birds.Remove(this);
        Instantiate(boom, transform.position, Quaternion.identity);//在小鸟死亡的地方实例化boom
        Destroy(gameObject);
        GameManager._instance.NextBird();
    }
}

然后打开U3D,将boom预制体拖拽给小鸟就可以了

小猪:

小猪是同样的道理

public class Pig : MonoBehaviour
{
    public GameObject boom;//新增
    public GameObject score;//新增
    private void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.relativeVelocity.magnitude > maxSpeed)
        {
            //销毁小猪
            GameManager._instance.pigs.Remove(this);//将死亡的小猪从列表中移除
            Instantiate(boom, transform.position, Quaternion.identity);//新增
            Instantiate(score, transform.position, Quaternion.identity);//新增
            Destroy(gameObject);
        }
        else if (collision.relativeVelocity.magnitude > minSpeed && collision.relativeVelocity.magnitude < maxSpeed)
        {
            //小猪受伤,图片更换
            render.sprite = hurtPig;
        }
    }
}

完事,看看效果

在这里插入图片描述

还可以

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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

举报
请填写举报理由
0/200