愤怒的小鸟 Day 2

以你之姓@ 2022-04-15 04:53 343阅读 0赞

目录

1.游戏逻辑的判定,实现多只小鸟的飞出

2.解决重复划线,小鸟轮换速度突然变大的问题

3.添加小鸟飞出的拖尾效果

4.整合场景,解决无法显示划线弹弓的问题

5.添加失败,胜利的游戏UI界面

6.修改火花粒子系统

  1. 让星星一颗一颗的显示

8.添加暂停动画

9.添加鼠标注册事件


1.游戏逻辑的判定,实现多只小鸟的飞出

生成GameManager脚本,添加小鸟和猪的列表,让多只小鸟飞出

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class GameManager : MonoBehaviour {
  5. public static GameManager _instance;
  6. public List<Bird> birds;
  7. public List<Pig> pig;
  8. private void Awake()
  9. {
  10. _instance = this;
  11. }
  12. private void Start()
  13. {
  14. Initialized();
  15. }
  16. public void Initialized()
  17. {
  18. for(int i = 0; i < birds.Count; i++)
  19. {
  20. if(i == 0) //第一只小鸟
  21. {
  22. birds[i].enabled = true;
  23. birds[i].sp.enabled = true;
  24. }
  25. else
  26. {
  27. birds[i].enabled = false;
  28. birds[i].sp.enabled = false;
  29. }
  30. }
  31. }
  32. /// <summary>
  33. /// 判定游戏逻辑
  34. /// </summary>
  35. public void NextBird()
  36. {
  37. if (pig.Count > 0)
  38. {
  39. if(birds.Count > 0)
  40. {
  41. //下一只飞吧
  42. Initialized();
  43. }
  44. else
  45. {
  46. //输了
  47. }
  48. }
  49. else
  50. {
  51. //赢了
  52. }
  53. }
  54. }

在Bird脚本中添加消失加载下一只的操作

  1. /// <summary>
  2. /// 下一只小鸟的飞出
  3. /// </summary>
  4. void Next()
  5. {
  6. GameManager._instance.birds.Remove(this);
  7. Destroy(gameObject);
  8. Instantiate(boom, transform.position, Quaternion.identity);
  9. GameManager._instance.NextBird();
  10. }
  11. }
  12. void Fly()
  13. {
  14. sp.enabled = false;
  15. Invoke("Next", 5);
  16. }

在Pig脚本中添加删除Pig列表中的操作

  1. if (isPig)
  2. {
  3. GameManager._instance.pig.Remove(this);
  4. }

2.解决重复划线,小鸟轮换速度突然变大的问题

记录第一只小鸟的初始位置,当后面更新小鸟时,将初始的位置赋给它

  1. private Vector3 originPos; //初始化的位置
  2. private void Awake()
  3. {
  4. _instance = this;
  5. if (birds.Count > 0)
  6. {
  7. originPos = birds[0].transform.position;
  8. }
  9. }
  10. public void Initialized()
  11. {
  12. for(int i = 0; i < birds.Count; i++)
  13. {
  14. if(i == 0) //第一只小鸟
  15. {
  16. birds[0].transform.position = originPos;
  17. birds[i].enabled = true;
  18. birds[i].sp.enabled = true;
  19. }
  20. else
  21. {
  22. birds[i].enabled = false;
  23. birds[i].sp.enabled = false;
  24. }
  25. }
  26. }

小鸟发射时禁用划线,当需要划线时再启用

  1. private void OnMouseUp()//鼠标抬起
  2. {
  3. isClick = false;
  4. rg.isKinematic = false;
  5. Invoke("Fly", 0.1f);
  6. //禁用划线组件
  7. right.enabled = false;
  8. left.enabled = false;
  9. }
  10. /// <summary>
  11. /// 划线
  12. /// </summary>
  13. void Line()
  14. {
  15. right.enabled = true;
  16. left.enabled = true;
  17. right.SetPosition(0, rightPos.position);
  18. right.SetPosition(1, transform.position);
  19. left.SetPosition(0, leftPos.position);
  20. left.SetPosition(1, transform.position);
  21. }

3.添加小鸟飞出的拖尾效果

详细查看https://blog.csdn.net/akof1314/article/details/37603559

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2tvdXpodWFuamluZzE4NDk_size_16_color_FFFFFF_t_70

4.整合场景,解决无法显示划线弹弓的问题

给场景添加物体

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2tvdXpodWFuamluZzE4NDk_size_16_color_FFFFFF_t_70 1

5.添加失败,胜利的游戏UI界面

制作胜利失败的UI,在GameManager里合适的位置添加代码

  1. public GameObject win;
  2. public GameObject lose;
  3. /// <summary>
  4. /// 判定游戏逻辑
  5. /// </summary>
  6. public void NextBird()
  7. {
  8. if (pig.Count > 0)
  9. {
  10. if(birds.Count > 0)
  11. {
  12. //下一只飞吧
  13. Initialized();
  14. }
  15. else
  16. {
  17. //输了
  18. lose.SetActive(true);
  19. }
  20. }
  21. else
  22. {
  23. //赢了
  24. win.SetActive(true);
  25. }
  26. }

运行程序结果如下:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2tvdXpodWFuamluZzE4NDk_size_16_color_FFFFFF_t_70 2

6.修改火花粒子系统

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2tvdXpodWFuamluZzE4NDk_size_16_color_FFFFFF_t_70 3

7. 让星星一颗一颗的显示

在GameManager中添加入下代码

  1. public void ShowStars()
  2. {
  3. StartCoroutine("Show");
  4. }
  5. IEnumerator Show()
  6. {
  7. for (int i = 0; i < birds.Count + 1; i++)
  8. {
  9. yield return new WaitForSeconds(0.2f);
  10. stars[i].SetActive(true);
  11. }
  12. }

运行程序,结果如下

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2tvdXpodWFuamluZzE4NDk_size_16_color_FFFFFF_t_70 4

8.添加暂停动画

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2tvdXpodWFuamluZzE4NDk_size_16_color_FFFFFF_t_70 5

9.添加鼠标注册事件

新建PausePanel,在里边添加方法

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class PausePanel : MonoBehaviour {
  5. private Animator anim;
  6. public GameObject button;
  7. private void Awake()
  8. {
  9. anim = GetComponent<Animator>();
  10. }
  11. public void Retry()
  12. {
  13. }
  14. /// <summary>
  15. /// 点击了pause按钮
  16. /// </summary>
  17. public void Pause()
  18. {
  19. //1.播放动画
  20. //2.暂停
  21. anim.SetBool("isPause", true);
  22. button.SetActive(false);
  23. }
  24. public void Home()
  25. {
  26. }
  27. /// <summary>
  28. /// 点击了继续按钮
  29. /// </summary>
  30. public void Resume()
  31. {
  32. Time.timeScale = 1;
  33. anim.SetBool("isPause", false);
  34. }
  35. /// <summary>
  36. /// pause动画播放完调用
  37. /// </summary>
  38. public void PauseAnimEnd()
  39. {
  40. Time.timeScale = 0;
  41. }
  42. /// <summary>
  43. /// resume动画播放完调用
  44. /// </summary>
  45. public void ResumeAnimEnd()
  46. {
  47. button.SetActive(true);
  48. }
  49. }

运行程序,结果如下:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2tvdXpodWFuamluZzE4NDk_size_16_color_FFFFFF_t_70 6

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2tvdXpodWFuamluZzE4NDk_size_16_color_FFFFFF_t_70 7

发表评论

表情:
评论列表 (有 0 条评论,343人围观)

还没有评论,来说两句吧...

相关阅读

    相关 愤怒小鸟 Day 1

    目录 1.资源导入,场景简单搭建 2. springjoint组建介绍 3. 小鸟的拖拽 4.拖拽距离最大限定 5.小鸟的飞出 6.猪的受伤 7.弹弓划线操作

    相关 愤怒小鸟 Day 2

    目录 1.游戏逻辑的判定,实现多只小鸟的飞出 2.解决重复划线,小鸟轮换速度突然变大的问题 3.添加小鸟飞出的拖尾效果 4.整合场景,解决无法显示划线弹弓的问题 5.

    相关 愤怒小鸟 Day 3

    目录 1.添加镜头跟随 2.音乐的添加 3.添加黄色小鸟 4.添加绿色的小鸟 5.添加黑色小鸟 6.处理黑色小鸟的爆炸问题 7.处理星星数组越界的问题 8.制作