首页 > 其他分享 >Unity 愤怒的小鸟

Unity 愤怒的小鸟

时间:2023-05-17 20:33:34浏览次数:34  
标签:星星 小鸟 GameManager Unity 添加 组件 关卡 愤怒

1.spring joint 2D组件

       弹簧关节。就是弹弓上伸缩弹性的绳子,添加组件会自动加一个刚体组件,把这个组件加在小鸟身上
2.弹弓添加刚体组件Rigibody 2D,把Body Type 改成static,意思是只让他挂组件,不让他受重力

       --世界坐标是以屏幕中心为原点,左负右正,下负上正
       --屏幕坐标是以屏幕左下角为原点上正下负 ; 屏幕坐标转世界坐标ScreenToWorldPoint();

3.小鸟的拖拽
      在小鸟身上加上spring joint 2D组建后,写脚本。

 写好后发现小鸟不会出现在屏幕上,因为小鸟现在是世界坐标,我们看到的是屏幕坐标,需要进行转换,同时固定好z轴。

 

 

 4.小鸟拖拽最大距离的限制

 

      如下图,我们需要弹弓绳这个被限制的向量(有方向有长度),长度就是A(小鸟的位置)减去B(原点的位置), 当我们需要的是方向,因为长度(maxDis)我们可以自由设置

 

 

5.小鸟飞出操作

就是让spring joint 2D组件失活

先获取spring joint 2D组件

 

 

 然后让鼠标松开就把组件false掉

 

 6.猪死亡爆炸特效

准备工作:选中素材中的几张爆炸图片拖到层级窗口做成动画后,把它做成预制体(命名为boom)。

可以在boom上添加个脚本写个destory()方法,在他动画最后一帧上添加个事件,选择上destory()方法,用来销毁。(爆炸后自动销毁)。

也可以不写脚本,设置让它在多长时间后销毁。

在猪的代码中public GameObject Boom,(别忘了在unity中把boom拖进去)

在猪死亡时,Instantiate一下boom'即可。

7.

实现多只小鸟
①. 先在场景中Ctrl+d复制出多只小鸟
②. 然后新建一个空物体用来管理小鸟,取名gamemanager',先获取到多只小鸟,用List。piblic List<Bird> birds; 在获取到猪。(因为建的是List集合,所以在unity中要把小鸟按顺序拖进gamemanager'中的birds中)

 

 


③. 写一个方法(instance)让除了第一只小鸟以外的鸟 spring joint 2D组件和bird脚本组件失活

写一个方法用来判断游戏逻辑,只要猪的数量小于零就胜利,否则下一只小鸟飞

④. 写一个方法控制下一只小鸟的飞出,先调用第一支小鸟的方法,把他remove掉。GameManager._instance.birds.Remove(this),然后调那个逻辑方法。

 

5.添加失败、胜利界面
先新建一个UI的Image,把胜利win、失败lose界面搭建好,然后给这个界面添加(Ctrl+6)一个动画,选一个color,实现一个由明到暗的效果

 控制color中a的值设置明暗

 把失败和胜利的界面建好后,在GameManager中写一个显示星星的方法(GameManager控制总逻辑,赢了还是输了),在胜利界面下建一个脚本用来显示星星,调用GameManager中的显示星星方法

 

 

 

在胜利动画最后一帧创建一个事件,把现实星星的函数放心去

 一切准备就绪后,在GameManager中控制这两个界面的显示,先获取

默认这两个界面都是关闭的,所以只需要在胜利/失败后激活它们即可

 最后在GameManager中设置一下

 胜利的界面会有三课星星,根据剩余的小鸟数量获得星星。

实现i星星一颗一颗的显示

建个数组接收一下星星

然后再写个携程让星星一颗一颗的显示

 6.添加鼠标注册事件

就是给“重新开始”、“返回菜单”添加事件。

画好UI后

 给这两个Image添加Button组件,选中写好的方法(方法写在GameManager中)

 7.选择关卡

先搭好UI

 

关卡需要指定数量星星开启,所以需要存储星星的数量用unity自带的(键值对存储,一个键对应一个值)

 

 

开启关卡的游戏逻辑(存储星星数量大于关卡所需数量)

 8.每个小关卡

画UI添加一个Grip组的组件管理每个小关卡间距、行高什么的

 写脚本控制每一关的选择

 大关卡与小关卡的交互

 

标签:星星,小鸟,GameManager,Unity,添加,组件,关卡,愤怒
From: https://www.cnblogs.com/jiangfc/p/17305480.html

相关文章

  • unity基础2
       向量夹角的余弦值V  然后弧度转角度,用关键字RadDeg 也可以直接求角度   ------------------------------------------------------------------------------------------------------------------------------------------------------------------------......
  • Unity 打包出来的apk安装到Oculus Quest2黑屏或闪退
    用Unity2022版本打包了一个空工程,安装到Oculus上,发现一直黑屏,然后又安装了一下Unity2019版本,再打包,直接闪退看了一下日志,有如下报错:WSystem.err:java.lang.RuntimeException:RequestedAPIversion(api=1.1.51.0,driver=0)isincompatiblewiththecurrentlyinstalled......
  • Unity 热更新学习笔记二:异步加载
    在学习异步加载前应该学习一下Untiy中如何进行性能分析为什么热更新要学习性能分析?在热更新的过程其实也就是一种资源加载的过程,而涉及到资源加载就不得不提性能分析。因为资源的加载通常是异步加载的,如果把资源都统合在一起加载游戏界面就会卡住,这是我们不希望发生的事情。Unt......
  • Burp Suite Professional / Community 2023.5 (macOS, Linux, Windows) - Web 应用安
    BurpSuiteProfessional/Community2023.5(macOS,Linux,Windows)-Web应用安全、测试和扫描BurpSuiteProfessional,Test,find,andexploitvulnerabilities.请访问原文链接:https://sysin.org/blog/burp-suite-pro-2023/,查看最新版。原创作品,转载请保留出处。作者......
  • Unity 角色移动2D动画模块
    usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;[RequireComponent(typeof(SpriteRenderer))]publicclassSpriteAnimator:MonoBehaviour{privateSpriteRendererspriteRenderer;[SerializeField]privateSpriteid......
  • Unity3D高级编程主程手记 学习笔记一:软件架构
    架构的重要性不言而喻,对于一个项目来说如果在开发初期就能确定好所使用的引擎,API以及各种系统之间的层次关系,那对于后续的开发一定会是事半功倍的,我想作者将软件架构放在第一章一定是想让Untiy程序员尤其是主程,一定要认真的对待架构这件事。优秀的架构师不仅需要对每个子系统的决......
  • Unity 2021.3.6f1 UnityHub 3.0.1 Win 安装图解 Unity 2021.3
     Unity2021.3.6f1UnityHub3.0.1Win安装图解Unity3D是一款跨平台的游戏引擎软件,它可用于开发2D、3D游戏以及虚拟现实、增强现实等应用程序。Unity3D提供了丰富的功能和工具,让开发者可以快速地创建高质量、交互性强的游戏和应用程序。Unity3D支持多种编程语......
  • 【开源游戏】Legends-Of-Heroes 基于ET 7.2的双端C#(.net7 + Unity3d)多人在线英雄联
    Legends-Of-Heroes一个LOL风格的球球大作战游戏,基于ET7.2,使用状态同步 Main基于C#双端框架[ET7.2],同步到ET主干详情请看日志。(https://github.com/egametang/ET)注意:已经升级.Net7,请安装.Net7SDK.此游戏为ET7.2的一个实践项目demo,玩法主要是球球大作战类型的吃食物吃敌人/......
  • unity Sprite中的Pixels Per Unit
    unity中最小的网格就是1unit。1unit默认是1米。1Unityunit=1meter(100cm)对于一个16*16像素的图片,如果我们将其PixelsPerUnit设置为16,那么这张图片的长宽都是1unit。在unity中刚好契合最小的格子。......
  • Unity Shader Toggle KeywordEnum Enum 使用
    Shader"Unlit/Custom/Shader05"{Properties{_MainTex("MainTex",2D)="white"{}[Toggle]_INVERT("Invertcolor?",Float)=0//_INVERT必须是大写的_Invert不可以[KeywordEnum(None,Add,M......