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. 死亡特效
其实就是通过帧动画来实现特效,通过图集的图片的切换,来让玩家看起来像死亡的特效
我实在图集里面找的图片来实现的
实现结果:
如果不会制作帧动画的话,建议去我的动画专栏学习一下,很简单的
然后将这个动画制作成预制体,以便于我们的小鸟和小猪都能使用
- 创建预制体文件夹
Prefabs
- 将这个动画承载的游戏对象拖拽到文件夹里面即可
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小游戏愤怒的小鸟修复以及特效的主要内容,如果未能解决你的问题,请参考以下文章