unity学习62,尝试做一个flappybird
- IT业界
- 2025-09-14 08:27:02

目录
学习参考
1 创建1个unity 2D项目
1.1 2D项目模板选择
1.1.1 2D(built-in-Render pipeline)
1.1.2 universe 2D
1.1.3 这次选择 2D(built-in-Render pipeline)
1.2 创建项目
1.2.1 注意点
1.2.2 如果想修改项目名
2 导入美术资源包
2.1 下载一个flappy bird的资源包
2.2 导入资源包
2.3 记得把UNITY视图修改为经典的2*3模式
2.4 先把界面整理成熟悉的2*3,然后开始整
2.5 还要把项目 设置修改为安卓,因为是手机游戏
3 开始整:基础调整准备
3.1 先新建1个 288*512的屏幕分辨率
3.2 图片UI素材太大的问题
3.3 修改摄像机size,而不是素材尺寸
4 地图背景bg
4.1 创建第2个bg,复制即可
4.2 更科学的修改方法
4.3 尝试间接计算bg的像素大小
编辑
4.4 关于3D和2D的最标准,新手要记住
4.5 创建1个空物体bg
5 创建地图背景bg脚本
5.1 脚本文件夹
5.2 给bg空物体挂一个脚本,实现bg自动滚动
5.3 脚本内容
5.4 把bg的 order in layer修改为很小的数,放在最底层,避免遮挡前面的内容
6 地面 ground
6.1 修改地面ground的配置
6.2 共用bg的脚本,只修改公共变量
6.3 记得营造视觉差效果
6.4 给地面增加碰撞
7 管子pipe
7.1 新建空物体和up down的pipe
7.2 调整layer的order, 让ground 显示在的pipe上层
7.3 给pipe增加碰撞
7.4 给空的父物体,增加一个 collider 2D, 并修改为触发器
8 小鸟bird
8.1 创建小鸟动画
8.2 给小鸟增加碰撞 和刚体,控制小鸟往下掉
8.3 脚本控制小鸟向上飞
9 控制小鸟的头的朝向
9.1 注意unity里的欧拉角
9.2 修改脚本
学习参考
Unity小白超神系列教程:Flappy Bird_哔哩哔哩_bilibili素材加公众号免费下载, 视频播放量 16589、弹幕量 19、点赞数 221、投硬币枚数 129、收藏人数 549、转发人数 135, 视频作者 Gamer飞羽, 作者简介 玩游戏、做游戏的up一枚,《新印象 Unity 2020游戏开发基础与实战》与《新印象:Unity游戏开发实例教程》作者。,相关视频:Unity制作飞扬的小鸟小游戏视频教程,【Unity 游戏开发教程】一小时制作一款小游戏 - 03. 愤怒的小鸟,Unity小游戏【吃豆人】-自己做的游戏作业,简单易懂,一小时使用Unity制作一个2D小游戏|基于Unity2023.1.1|游戏开发|Unity|编程|游戏制作|入门教程,Unity小白超神系列教程:超级玛丽,【灯塔极简教程】20分钟用Unity做一个滚球跑酷游戏,Unity小游戏【贪吃金币】-自己做的游戏作业,简单易懂,【Unity基础教程】入门游戏制作,十分钟搞定涂鸦跳跃2D游戏,愤怒的小鸟开发-基于Unity2023-2D小白教程-游戏开发|编程|unity3d|u3d|unity基础|手游开发|C#编程|虚幻游戏开发,Unity小游戏《FlappyBird》从演示到发布 零基础最全教程(Unity/C#/零基础/游戏制作/游戏开发/编程)B0102 .bilibili /video/BV1Sb411N7DQ?spm_id_from=333.788.videopod.sections&vd_source=5fa6d2958ae880d9550a17f8050fd5ed
2_按钮单击效果与场景切换_哔哩哔哩_bilibili2_按钮单击效果与场景切换是Unity制作飞扬的小鸟小游戏视频教程的第2集视频,该合集共计9集,视频收藏或关注UP主,及时了解更多相关视频内容。 .bilibili /video/BV1GV411a7Mc?spm_id_from=333.788.player.switch&vd_source=5fa6d2958ae880d9550a17f8050fd5ed&p=2
1 创建1个unity 2D项目 1.1 2D项目模板选择 1.1.1 2D(built-in-Render pipeline)This is an empty project configured for 2D apps. It uses Unity's built-in renderer. 这是一个为2D应用程序配置的空项目。它使用Unity的内置渲染器。
1.1.2 universe 2DThis is an empty project configured for 2D apps. It uses Unity’s Universal Render Pipeline pre-configured with 2D Renderer.
这是一个为2D应用程序配置的空项目。它使用预先配置了2D渲染器的Unity通用渲染管道。
1.1.3 这次选择 2D(built-in-Render pipeline)因为之前3D项目也是选择 universe 3D ,结果在asset store里下载的资源是紫色贴图报错
怀疑是不是轻量级的和大多数人的项目不匹配,这次用传统的这个2D(built-in-Render pipeline)
1.2 创建项目 1.2.1 注意点 注意,创建前,记得修改项目名否则比较麻烦 1.2.2 如果想修改项目名 如果想修改项目名右键,show in exolporer /浏览器中打开修改项目文件夹的名字然后unityhub里就找不到了需要重新再打开就可以了 2 导入美术资源包 2.1 下载一个flappy bird的资源包 其实没有也可以,就是自己做,对于没美术基础的比较麻烦,比如我可以先丑一点我之后打算替代掉这些资源 2.2 导入资源包 双击unity资源包,即可import点击import 2.3 记得把UNITY视图修改为经典的2*3模式主要跟着各种视频,文章都是这么学的,习惯了
换个格式看的难受
2.4 先把界面整理成熟悉的2*3,然后开始整舒服了开始整
2.5 还要把项目 设置修改为安卓,因为是手机游戏一般不修改默认是windows
切换完毕
3 开始整:基础调整准备 3.1 先新建1个 288*512的屏幕分辨率 好像原游戏的地图分辨率,屏幕图就这么大需要再下面的game窗口,新建这么一个 3.2 图片UI素材太大的问题 没搞明白,为啥这个bg这么大可能是因为导入的素材包里是别人已经设置过的UI,而不是原图吧?而且我看不到图片的原始尺寸??比如288*512管他呢,先改 3.3 修改摄像机size,而不是素材尺寸 修改摄像机size,而不是素材尺寸这样可以避免,后面每个资源都要修改,只需要修改摄像机1次,去适配资源即可拖到摄像机的白色控制点,但是好像只能 按照摄像机的宽高比一起调整,不能自由调整。 4 地图背景bg 4.1 创建第2个bg,复制即可 且保证2个bg的y是一致的,就是 transform里的y要一致 4.2 更科学的修改方法 是知道图片的尺寸按照1米=100pixel来换算图片是按像素,比如288*512,而unity里是填写米然后把bg2,也和bg叠在一起,也就是,重置 transform为000,然后把X修改为288/100=2.88即可刚好两张平铺错开 4.3 尝试间接计算bg的像素大小 上下叠一张,左右叠一张虽然都是看 pviot之间的距离,实际也就是图片的大小 而这个资源上写的16比换算下来 23.2*16=371.2像素换算下来 23.2*16=533.6像素和我现在用的288*512 还是有些区别的后来发现,双击UI里图片可以看到实际大小 378*537
4.4 关于3D和2D的最标准,新手要记住unity里默认的
3D的是 水平平面(X right ,Z front),Y up 纵 ---立体
2D的是 竖直平面 (X horizontal,Y vectical 纵 )
4.5 创建1个空物体bg把之前的bg图,分别改名bg1 bg2放入其作为子物体
5 创建地图背景bg脚本 5.1 脚本文件夹这里出现了很诡异的问题
不让我在unity里创建c#脚本,每次创建都一闪而过
气得我差点准备删了重建
我后来想,可能是导入资源包做了点手脚限制了
我干脆绕了过去。直接在 windows对于的assets里创建脚本是OK的
5.2 给bg空物体挂一个脚本,实现bg自动滚动 5.3 脚本内容 using System.Collections; using System.Collections.Generic; using UnityEngine; public class bgControl : MonoBehaviour { //bg移动速度,方便外面修改 public float speed1=0.2f; //use this for initialization; void Start() { } //Update is called once per frame; void Update() { //遍历bg foreach(Transform trans1 in transform) { //移动bg Vector2 v1=trans1.position; v1.x=v1.x+speed1*Time.deltaTime; trans1.position=v1; } } }实测OK,但是动的特别慢,因为是远景的原因
速度的原因,怀疑是因为这里是按16:1的像素/米,得搞快点往右移动,是+可以修改为往左边移动,更符合一般视角感觉,修改为-修改
如100:1是速度0.2,16:1 速度为1.25,同时改成向左移动试试而且,因为 speed1是public 变量,unity脚本外面修改得优先级高,只改脚本不生效,外面还是0.2f,记得修改unity里的speed1得值。 using System.Collections; using System.Collections.Generic; using UnityEngine; public class bgControl : MonoBehaviour { //bg移动速度,方便外面修改 public float speed1=1.25f; //use this for initialization; void Start() { } //Update is called once per frame; void Update() { //遍历bg foreach(Transform trans1 in transform) { //移动bg Vector2 v1=trans1.position; v1.x=v1.x-speed1*Time.deltaTime; trans1.position=v1; } } }bg移动速度
那如果把宽度严格得定义为23.625,还有2个匹配修改
bg1本身图片是左边和右边是刚好可以相接的bg2 距离bg1,也就是bg2的x 也要刚好是23.625,否则会有缝隙或叠加现在bg可以无缝的向左边后退滚动了 5.4 把bg的 order in layer修改为很小的数,放在最底层,避免遮挡前面的内容 6 地面 ground同样新建空物体,建2个ground
6.1 修改地面ground的配置 地面应该是336*112但是这里的是 800*392把ground的scale 调整为 0.6x 0.4y差不多
让2个ground相距离X为30
其中一个x=-3。 另外一个x=27
6.2 共用bg的脚本,只修改公共变量 bg的脚本继续挂载ground空物体上修改参数实测🆗 6.3 记得营造视觉差效果 也就是地面移动速度快,近景城市移动速度慢,远景 6.4 给地面增加碰撞 7 管子pipe 7.1 新建空物体和up down的pipe 并且设置到00后调整空缺位置 7.2 调整layer的order, 让ground 显示在的pipe上层 让ground 显示在的pipe上层ground的order更高即可 7.3 给pipe增加碰撞 新增 collider 2D 7.4 给空的父物体,增加一个 collider 2D, 并修改为触发器这样没有碰撞,但是会有触发判断
且弄到后半段
8 小鸟bird 8.1 创建小鸟动画多个图片一起拖过去
8.2 给小鸟增加碰撞 和刚体,控制小鸟往下掉限制小鸟自己Z轴移动,就是X,Y 之外的翻滚,滚动
8.3 脚本控制小鸟向上飞 using System.Collections; using System.Collections.Generic; using UnityEngine; public class birdControl : MonoBehaviour { //以下都是按1/16算的 //外界给小鸟向上飞得外力 public float force1=10f; //定义一个新刚体 public Rigidbody2D rbody1; //use this for initialization; void Start() { // 获取小鸟得刚体 rbody1=GetComponent<Rigidbody2D>(); } //Update is called once per frame; void Update() { //判断点击则给小鸟向上 0左,1右键,2鼠标中键 if(Input.GetMouseButtonDown(0)) { rbody1.velocity=new Vector2(0,force1); } } } 9 控制小鸟的头的朝向 9.1 注意unity里的欧拉角unity里是用的0-360度,都是正数的角度
但是unity外面面板上填的不是,是正数和负数
9.2 修改脚本增加头部转向
限制角度
using System.Collections; using System.Collections.Generic; using UnityEngine; public class birdControl : MonoBehaviour { //以下都是按1/16算的 //外界给小鸟向上飞得外力 public float force1=10f; //定义一个新刚体 public Rigidbody2D rbody1; //定义一个最大角度 public float maxAngle=40; //use this for initialization; void Start() { // 获取小鸟得刚体 rbody1=GetComponent<Rigidbody2D>(); } //Update is called once per frame; void Update() { //判断点击则给小鸟向上 0左,1右键,2鼠标中键 if(Input.GetMouseButtonDown(0)) { rbody1.velocity=new Vector2(0,force1); } //获取当前的角度.Z表示旋转 Vector3 angle1 =transform.eulerAngles; //旋转 //只给Y轴的,不给X轴的? angle1.z=angle1.z+rbody1.velocity.y; //将旋转Z同步面板上的值,如果不做这个可以直接用360角度去做也可以 angle1.z=angle1.z-180; if(angle1.z>0) { angle1.z=angle1.z-180; } else { angle1.z=angle1.z+180; } Debug.Log(angle1.z); //限制翻转 angle1.z=Mathf.Clamp(angle1.z,-maxAngle,+maxAngle); transform.eulerAngles=angle1; } }unity学习62,尝试做一个flappybird由讯客互联IT业界栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“unity学习62,尝试做一个flappybird”
上一篇
              linux常见操作命令
下一篇
              NVIDIAGPU系列简单介绍
 
               
               
               
               
               
               
              ![P1055[NOIP2008普及组]ISBN号码(java)【AC代码】](/0pic/pp_79.jpg) 
               
   
   
   
   
   
   
   
  