c#和unity开发愤怒的小鸟(1.5)

一周一更的我又来了,接着上周的愤怒小鸟(1),开始这周的学习。
我用的是Unity 2018版。
还是把素材链接呈上。
链接:https://pan.baidu.com/s/1oFXvnuIvdaB27Us_rPiLbg
提取码:n1fz

添加小鸟飞出的尾拖

将素材导入Unity中
在这里插入图片描述
在这里插入图片描述
这样就导入进去了,在鸟上创建一个空物体,改名为trail将空物体的,将素材拖入
在这里插入图片描述
可以将颜色改为自己喜欢的颜色在这里插入图片描述
下面呈上代码,创建一个TestMyTrail脚本,加上代码。

using UnityEngine;
using System.Collections;
using System.Collections.ObjectModel;

public class TestMyTrail : 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);
    }

    public void sRrail()
    {
    
    
        //设置拖尾时长
        myTrail.SetTime(2.0f, 0.0f, 1.0f);
        //开始进行拖尾
        myTrail.StartTrail(0.5f, 0.4f);
    }

    public void cTrail()
    {
    
    
        //清除拖尾
        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);
            }
        }
    }
}

向Bird脚本中添加

public class Bird : MonoBehaviour {
    
    

	private  bool isClick = false ;
	private float maxDis = 1.5f;
	public SpringJoint2D Sj;
	private Rigidbody2D Rb;

	public LineRenderer right;
	public Transform rightPos;
	public LineRenderer left;
	public Transform leftPos;

    public GameObject boom;
	protected TestMyTrail myTrail;

	void Start()
	{
    
    
		Sj = GetComponent<SpringJoint2D>();
		Rb = GetComponent<Rigidbody2D>();
		myTrail = GetComponent<TestMyTrail>();
	}

	// Use this for initialization

	private void OnMouseDown()//鼠标按下
    {
    
    
		isClick = true;
		Rb.isKinematic = true;
    }
	
	
	private void OnMouseUp()//鼠标抬起
    {
    
    
		isClick = false;
		Rb.isKinematic = false;
		Invoke("Fly", 0.1f);
        right.enabled = false;
        left.enabled = false;
    }
	
	// Update is called once per frame
	void Update () 
	{
    
    
		if (isClick)
        {
    
    
			transform.position = Camera.main.ScreenToWorldPoint(Input.mousePosition);//让小鸟被鼠标拖拽
			transform.position += new Vector3(0,0, -Camera.main.transform.position.z);

            if (Vector3.Distance(transform.position,rightPos.position) > maxDis)//限制拖拽距离
            {
    
    
				Vector3 pos = (transform.position - rightPos.position).normalized;
				pos *= maxDis;
				transform.position = pos + rightPos.position;
            }
			Line();
		}
	}
	void Line()//弹弓划线
	{
    
    
        right.enabled = true;
        left.enabled = true;

		right.SetPosition(0, rightPos.position);
		right.SetPosition(1, transform.position);

		left.SetPosition(0, leftPos.position);
		left.SetPosition(1, transform.position);
	}

	void Fly()//鼠标抬起,小鸟飞出
    {
    
    
		Sj.enabled = false;
		myTrail.sRrail();
        Invoke("Next", 5);
    }

    void Next() {
    
    //将飞出的小鸟销毁,下一个小鸟上弹弓
        GameManager._isstance.birds.Remove(this);
        Destroy(gameObject);
        Instantiate(boom, transform.position, Quaternion.identity);
        GameManager._isstance.NextBird();
    }
	private void OnCollisionEnter2D(Collision2D collision)
    {
    
    
    myTrail.cTrail();
	}
}

将尾拖物体放在小鸟后面,以形成尾拖效果
在这里插入图片描述
将TestMyTrail脚本拖入小鸟内,将尾拖放入框中
在这里插入图片描述

划线弹弓无法显示问题

也可以将背景层级设置为-1.
在这里插入图片描述

添加胜利和失败的UI界面

失败界面

在这里插入图片描述
在这里插入图片描述
胜利界面,

在这里插入图片描述
在这里插入图片描述
创建一个Win脚本,托给Win物体

public class win : MonoBehaviour {
    
    

    // Use this for initialization
    public void Show()
    {
    
    
        GameManager._isstance.ShowStars();
    }
}

添加粒子系统

在这里插入图片描述
在这里插入图片描述
导入素材后,将素材拖入资源面板
在这里插入图片描述
创建一个空物体Root,将子物体拖入Root中,
在这里插入图片描述
在这里插入图片描述
可以按T调节大小
将烟花拖入星星中
在这里插入图片描述
该加代码了!!!
GameManager脚本

public class GameManager : MonoBehaviour {
    
    

	public List<Bird> birds;
	public List<Pig> pigs;

    private Vector3 originPos;

    public static GameManager _isstance;

    public GameObject win;
    public GameObject lose;

    public GameObject[] stars;

	// Use this for initialization
	void Start () {
    
    
        _isstance = this;
        Initialized();
        if (birds.Count > 0)
        {
    
    
            originPos = birds[0].transform.position;
        }
    }
	public void Initialized()
    {
    
    
        for (int i = 0; i < birds.Count; i++)
        {
    
    
            if (i == 0)
            {
    
    
                birds[i].transform.position = originPos;
                birds[i].enabled = true;
                birds[i].Sj.enabled = true;
            }
            else
            {
    
    
                birds[i].enabled = false ;
                birds[i].Sj.enabled = false ; 
            }
        }
    }

    public void NextBird()
    {
    
    
        if (pigs.Count >0)
        {
    
    
            if (birds.Count > 0)
            {
    
    
                Initialized();
            }
            else
            {
    
    
                lose.SetActive(true);
            }
        }
        else
        {
    
    
            win.SetActive(true);
            ShowStars();
            //赢
        }
    }

    public void ShowStars()
    {
    
    
        StartCoroutine("show");
    }

    IEnumerator show()
    {
    
    
        for (int i = 0; i < birds.Count + 1; i++)
        {
    
    
            yield return new WaitForSeconds(0.2f);
            stars[i].SetActive(true);
        }
    }
}

在这里插入图片描述
设置动画
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
win和lose都要添加
如果因层级问题,看不到粒子特效,将这个改为Player
在这里插入图片描述

添加暂停动画

在这里插入图片描述
搭建这样的UI界面
在这里插入图片描述
在这里插入图片描述
还有这个暂停按钮
,,,
暂停画面动画
在这里插入图片描述
在这里插入图片描述
剩下得明天更,感谢大家
第一节:https://blog.csdn.net/m0_47605113/article/details/109216649
愤怒小鸟(1.5):
https://blog.csdn.net/m0_47605113/article/details/109379611
总代码链接:https://blog.csdn.net/m0_47605113/article/details/109441671

猜你喜欢

转载自blog.csdn.net/m0_47605113/article/details/109379611