一周一更的我又来了,接着上周的愤怒小鸟(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