U3D小游戏愤怒的小鸟部分游戏逻辑
Posted 布小禅
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了U3D小游戏愤怒的小鸟部分游戏逻辑相关的知识,希望对你有一定的参考价值。
前言
自己做一下小时候玩的风靡一时的愤怒的小鸟这个游戏,相信有很多人都在某一段时间沉迷过这个游戏吧~~
五、游戏逻辑判定
游戏胜利的判定,多只小鸟轮番成为游戏主角,毕竟我们玩的愤怒的小鸟是有多个小鸟的
1. 增加小猪和小鸟的数量
现在我们的场景中只有一个小鸟和一个猪,所以我们先使用copy的方式来增加小鸟和猪的数量,毕竟小鸟和小猪的脚本配置已经差不多了。
直接选中小鸟和猪,使用快捷键Ctrl + D
进行复制个数看你自己
2. 创建管理类
-
添加一个空物体,并且为空物体添加一个脚本,一般都命名为:
GameManager
。 -
创建空物体直接在
Hierarchy
中右键创建Create Empty
即可,同样的,我们命名为GameManager
。 -
然后点开
GameManager
的Inspector
面板,创建GameManager
脚本。 -
编写
GameManager
类的代码/** * ========================================== * FileName:#GameManager# * Author:#Smly# * CreatTime:#2022/10/7# * NowPath:#path# * ========================================== */ using System.Collections; using System.Collections.Generic; using UnityEngine; public class GameManager : MonoBehaviour public List<ColliderBird> birds; public List<Pig> pigs; //设置单例模式,小鸟死亡后将小鸟从列表中删除,然后再次调用BirdSet函数,将删除后的列表中的第一个小鸟设置启用 public static GameManager _instance; /// <summary> /// 遍历小鸟列表,把除了第一个的小鸟的弹簧和脚本组件禁用 /// </summary> public void BirdSet() for (int i = 0; i < birds.Count; i++) if (i==0) // 第一个小鸟,弹簧和脚本组件启用 birds[i].enabled = true; birds[i].sp2.enabled = true;//这里需要将我们之前设置的弹簧组件设置成public,否则无法访问 else //后面的小鸟禁用 birds[i].enabled = false; birds[i].sp2.enabled = false;
-
将游戏物体添加到我们创建的列表里,直接拖拽即可,小鸟注意顺序,小猪不需要
3. 设置小鸟和小猪死亡
修改部分如下:
小鸟脚本部分
public class ColliderBird : MonoBehaviour
//修改部分
[HideInInspector]
public SpringJoint2D sp2;//弹簧组件
void Power()
sp2.enabled = false;//将束缚小鸟的弹簧禁用掉
Invoke("NextBird", 5);//五秒后销毁小鸟
//新增部分
void NextBird()
GameManager._instance.birds.Remove(this);//将小鸟从列表中移除
Destroy(gameObject);//销毁小鸟
小猪脚本部分:
public class Pig : MonoBehaviour
private void OnCollisionEnter2D(Collision2D collision)
if (collision.relativeVelocity.magnitude > maxSpeed)
//销毁小猪
GameManager._instance.pigs.Remove(this);//将死亡的小猪从列表中移除
Destroy(gameObject);
else if (collision.relativeVelocity.magnitude > minSpeed && collision.relativeVelocity.magnitude < maxSpeed)
//小猪受伤,图片更换
render.sprite = hurtPig;
4. 输赢的判断
根据场景中小鸟和猪的数量进行判定
小猪数量>小鸟数量——>输了
小鸟数量>0且小猪数量=0——>赢了
小鸟数量和小猪数量都>0——>下一个小鸟登场
public class GameManager : MonoBehaviour
public void NextBird()
if (pigs.Count > 0)
if (birds.Count < 0)
//输了
//游戏结束
else
BirdSet();
else
//赢了
同时我们需要对GameManager
类进行初始化,所以在小鸟类中
public class ColliderBird : MonoBehaviour
private void Start()
right = GameObject.Find("Rifht_dangong").GetComponent<Transform>();
rb2 = GetComponent<Rigidbody2D>();
sp2 = GetComponent<SpringJoint2D>();
GameManager._instance.BirdSet();
5. 运行代码查看效果
以上是关于U3D小游戏愤怒的小鸟部分游戏逻辑的主要内容,如果未能解决你的问题,请参考以下文章