U3D小游戏愤怒的小鸟修复以及特效

Posted 布小禅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了U3D小游戏愤怒的小鸟修复以及特效相关的知识,希望对你有一定的参考价值。

前言

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

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;
        
    

完事,看看效果

还可以

以上是关于U3D小游戏愤怒的小鸟修复以及特效的主要内容,如果未能解决你的问题,请参考以下文章

U3D小游戏愤怒的小鸟修复以及特效

U3D小游戏愤怒的小鸟修复以及特效

U3D小游戏愤怒的小鸟小特效

U3D小游戏愤怒的小鸟小特效

U3D小游戏愤怒的小鸟小特效

U3D小游戏愤怒的小鸟小特效