unity愤怒的小鸟学习制作(一)
基础知识已经差不多了,现在开始模仿敲代码然后在模仿中熟悉软件和语法
视频链接和素材如下:视频
目录
- 第一部分:游戏逻辑
- 1、新建2D工程
- 2、创建三个场景
- 3、导入游戏需要的资源
- 4、开始编辑02-game
- 4.1 裁切图片
- 4.2 初步编辑
- 4.3 实现小鸟的拖拽
- 4.4 实现鼠标控制小鸟
- 4.5 拖拽最大距离限制
第一部分:游戏逻辑
1、小鸟的拖拽(最大距离限制)
2、小鸟的飞出
3、小鸟与猪,木头碰撞(死亡/受伤)
4、皮筋的绘制
5、一只小鸟-→>多只的转化
6、制作各种五毛特效
7、镜头跟随
8、游戏结束,胜利的判定
9、添加音效
涉及知识点:
1、屏幕坐标与世界坐标的转化
2、Spring Joint组件的使用
3、碰撞检测(OnCollisionEnter2D)
4、Line Renderer等等
1、新建2D工程
前面有讲怎么创建工程,这里只需要改变3D为2D就可以了
等待一段时间后,就可以看到
(这种界面是因为界面设置为2by3)

如果不小心建立了3D的项目,只需要改变以下两个地方,也能把项目重新设置成2D的。
首先,点击Scene窗口的矩形按钮,框选出窗口的相机,这样会在Inspector窗口显示出相机的属性和设置,然后再Projetion中选择Orthgraphic


然后在Edit属性栏选择ProjectSetting,找到里面的Editor,然后将3D改成2D即可


这样你的2D项目就建立好了,记得保存一下当前场景,CTRL+S
2、创建三个场景
虽然视频是直接CTRL+N就可以创建,但由于我的版本不同,所以可能导致方法不同,这里只介绍我的版本下采用的方法,视频可以自行观看。
首先找到Project中的Sence,右击创建

在创建中找到Sence,点击创建新的场景

然后右边就会出现新建的场景,右击名字部分,选择rename,最后重命名,以下是处理好的三个场景

3、导入游戏需要的资源
首先找到下载资源的位置,里面有Image文件夹和Music文件夹和两个不知道是啥的东西,我们先导入上面两个文件夹

然后复制上面两个文件夹,也可以一次复制一个
接着在Sence界面右击,找到Show in Explorer

最后在打开的文件夹里粘贴刚才复制的文件夹,会自动生成meta文件

这样我们就可以看到自动导入的一些图片和音乐
4、开始编辑02-game
以下图片由于编辑错误,都在01-level里面了,但是其实就是在02-game的,不要怀疑标题,怀疑图片吧
4.1 裁切图片
首先打开Image找到BIRDS_1,然后点击,在右边的Inspector里面找到Sprite Mode,切换成Mulitiple,然后点击Apply

接着点击Sprite Editor,找到Slice,保持默认,点击Slice进行裁切,这样就会把图案分成一个一个的,并且点击任何一个都会有自己的编号
然后我们选择一只红色的小鸟和两个弹弓,点击记住编号,记得点击APPLY再退出
点击BIRDS_1右边的三角,也可以看到裁切好的图片及其编号
4.2 初步编辑
找到红色的小鸟159还有两个弹弓,拖向Hierarchy窗口,要是拖错了就右击然后删除重新拖
在Sence界面使用矩形按钮移动弹弓的位置,使其比较合适,如果摄像机的大小太大了,也可以调节3D icon的大小
为了让小鸟的的图层在上面而弹弓一边在下面,我们要新建一个图层给小鸟。
单机小鸟,然后在Inspector的Sorting Layer里面新建一个layer图层,命名为player
接着把三个物品的Sorting Layer都设置成player,小鸟的order in Layer设置成1,其余两个一个为0,一个为2,这样就有遮挡效果了
最后重新命名这三个物体,并保存,这样就搭建好了一点点了

写到这里发现编辑错了场景,这里应该是02-game的场景编辑,不过问题不大,记得改动一下场景的名字就好,诶嘿。
4.3 实现小鸟的拖拽
实现小鸟的拖拽是基于Unity提供的一个组件,叫做Spring Joint,找到Add Component,然后搜索到这个组件,上面的是给3D使用的,下面的是给2D使用的,我们选择2D

这时候点击开始,会看到神奇的现象,小鸟会绕着一点来回摆动
这里附上官网的解释链接,或者这个链接具体解释可以在这里面看到

所以可以看到是需要两个刚体,小鸟算一个,另一个是右边的弹弓,所以点击right,找到add Component,找到Physics 2D,选择RIDbody 2D,然后再把bodytype改成static,这样就可以了



接下来,把刚刚创建的刚体拖到相连的刚体这里


这样就把挂载点挂在right上面了,还可以自己调试一下位置

最后把AUTO的√给去掉,这样就可以自己设置弹簧的长度,再把下面的频率加大,增加弹簧的强度
4.4 实现鼠标控制小鸟
添加碰撞体来实现鼠标和小鸟的交互,和之前添加刚体一样,在Physics 2D里面找到Circle Collider

然后添加脚本来控制,这时候脚本在Sence目录里面


在Assets里面新建一个文件夹,命名为scripts,然后把新建的脚本移入这个文件夹中

双击脚本打开,等待一段时间,在VS里面会显现出里面的内容

OnMouseDown、OnMouseUp:该函数就是当碰撞器满足一定要求就会调用该函数,具体可自行查看
Update:该函数不断刷新,具体可以自行查找观看
最后,我们这个脚本的内容如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Bird : MonoBehaviour
{//要实现当鼠标一直按下时,小鸟的位置跟随鼠标的位置private bool isClick = false;private void OnMouseDown()//当鼠标按下就会调用该函数{isClick = true;}private void OnMouseUp()//当鼠标抬起就会调用该函数{isClick = false;}private void Update()//刷新{if(isClick)//鼠标一直按下,进行位置的跟随{//这里有屏幕距离和世界距离的转化transform.position = Camera.main.ScreenToWorldPoint( Input.mousePosition);//需要把小鸟的Z轴减去主摄像机的Z轴transform.position -= new Vector3(0, 0, Camera.main.transform.position.z);//保证z轴数值为0//transform.position += new Vector3(0,0,10);}}
}
以上脚本可以实现当我们在Game界面,可以长按住小鸟进行拖拽,然后弹射出去,就是因为力的作用,会导致一直在转,下面来解决这个问题
4.5 拖拽最大距离限制
让小鸟可以拖拽的位置绕着弹簧的某端开始记录距离,所以得新建一个空的物体,右击right然后create Empty,然后重命名为rightPos,并将其移动到弹簧的一端

改变脚本内容:因为我们需要获得最大距离,所以首先得到固定的rightPos到小鸟的向量,然后乘以最大距离,再加上固定点的位置,如下图所示

代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Bird : MonoBehaviour
{//要实现当鼠标一直按下时,小鸟的位置跟随鼠标的位置private bool isClick = false;public Transform rightPos;public float maxDis = 3;//最大距离是3米private void OnMouseDown()//当鼠标按下就会调用该函数{isClick = true;}private void OnMouseUp()//当鼠标抬起就会调用该函数{isClick = false;}private void Update()//刷新{if(isClick)//鼠标一直按下,进行位置的跟随{transform.position = Camera.main.ScreenToWorldPoint( Input.mousePosition);//需要把小鸟的Z轴减去主摄像机的Z轴transform.position -= new Vector3(0, 0, Camera.main.transform.position.z);//保证z轴数值为0//transform.position += new Vector3(0,0,10);if(Vector3.Distance(transform.position,rightPos.position )> maxDis)//大于最大长度{Vector3 pos = (transform.position - rightPos.position).normalized;//单位化向量pos *= maxDis;//最大长度的向量transform.position = pos + rightPos.position;} }}
}
保存脚本内容,然后将rightPos拖拽到Right Pos里面,下面的最大距离可以自己修改

效果如下

有点晕,还是改天继续吧
相关文章:
unity愤怒的小鸟学习制作(一)
基础知识已经差不多了,现在开始模仿敲代码然后在模仿中熟悉软件和语法 视频链接和素材如下:视频 目录 第一部分:游戏逻辑1、新建2D工程2、创建三个场景3、导入游戏需要的资源4、开始编辑02-game4.1 裁切图片4.2 初步编辑4.3 实现小鸟的拖拽4…...
建筑专业可以转行学云计算吗?
当然可行。 在过去的几年中,我们已经帮助很多建筑土木工程专业的同学转行学习云计算技术,尤其是在建筑信息化编程方向。近年来,云计算行业持续发展,涉及到众多领域,如云数据中心、云安全、云存储、云计算机服务等。云…...
网络安全:namp扫描工具
-sP可以扫描一个网段ip以及状态和基本信息,10.1.1.2-3就是扫描2和3这两个ip的主机 -p可以扫描指定ip对应主机的端口号,可以是一个范围 nmap简单扫描:nmap 地址 检查地址是否在线以及open的端口号 在端口开放,不一定可以与对方正常…...
java错题总结(19-21页)
链接:关于Java中的ClassLoader下面的哪些描述是错误的_用友笔试题_牛客网 来源:牛客网 B:先讲一下双亲委派机制,简单来说,就是加载一个类的时候,会往上找他的父类加载器,父类加载器找它的父类加…...
总结846
学习目标: 月目标:5月(张宇强化前10讲,背诵15篇短文,熟词僻义300词基础词) 周目标:张宇强化前3讲并完成相应的习题并记录,英语背3篇文章并回诵 每日必复习(5分钟&#…...
[ubuntu][原创]ubuntu上安装stable-diffusion-webui
下载源码: git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui 一般方法就是: bash webui.sh 但是很遗憾这个国内很难成功,而且很容易陷入困境,因此需要下面方法 核心思想:环境和源码分开安装 下…...
【数组排序算法】
目录 一、数组排序算法1、冒泡排序算法1.1、图形解释1.2、冒泡算法的脚本写法 二、直接选择排序1.1、动态图解1.2、直接选择排序算法的脚本编写 三、直接插入排序1.1、基本思想:1.2、动态图解1.3、直接插入排序的算法脚本编写 四、反向序列算法1.1、反向序列算法的脚…...
制造企业选择库存管理条码工具需要关注哪些点?
Dynamsoft Barcode Reader SDK 一款多功能的条码读取控件,只需要几行代码就可以将条码读取功能嵌入到Web或桌面应用程序。这可以节省数月的开发时间和成本。能支持多种图像文件格式以及从摄像机或扫描仪获取的DIB格式。使用Dynamsoft Barcode Reader SDK,…...
SPI配置
I/O配置 主输出、从输入(MOSI) 主出从入(MOSI )引脚是主器件的输出和从器件的输入,用于主器件到从器件的串行数据传输。当SPI 配置为主器件时,该引脚为输出,当 SPI 配置为从器件时,该…...
给你们讲个笑话——低代码会取代程序员
今天是正经男,我们严肃讨论一下一直以来争吵不休的取代问题。 低代码开发平台,低代码技术会取代开发人员么? 一、背景 低代码开发平台的普及,让很多公司对快速生成应用抱有很大期望。甚至有人认为,低代码开发平台未来…...
Kotlin的出现无疑是为了超越Java而存在
Kotlin的出现无疑是为了超越Java而存在。在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言,背景就是Oracle告Google侵权使用java。众所周知,Java的跨平台的开发语言,得益于虚拟机。我比较关注Kotlin用于Android…...
基于C#开发 B/S架构的实验室管理系统 云LIS系统(MVC + SQLserver + Redis)
一、云LIS系统是将各种样本、免疫、临检、放免、及实验用的分析仪器,通过网络管理和传输实验分析过程中全部数据。对每一专业,实现检验申请、样本采集、样本核收、联机检验、质量控制、报告审核到报告发布的全环节的信息化管理平台。 二、基于B/S架构的云…...
Webpack5有哪些更新?
52. Webpack5有哪些更新? 1. 更快的构建速度 Webpack5 在构建速度方面做出了一些改进,其中最重要的改进是使用持久性缓存。持久性缓存可以将中间结果存储在硬盘上,这些结果可以在下一次构建时被重用,从而减少了构建时间。此外&a…...
前端Vue
前端Vue 基础语法 <div id"div"><h1>This is a data:{{data}}</h1><h1>This is a method:{{method()}}</h1> </div><script>//创建vue实例需要传入配置对象,el指定一个元素作为容器,data保存需要的数据,methods定义函数…...
SpringCloud 分布式事务组件之Seata
目录 背景介绍什么是分布式事务什么叫做逆向补偿呢互联网最流行的分布式事务组件seata总结 背景 大家好,今天给大家分享一个在2022年出去面试Java几乎必问的一个技术,那就是seata。什么??你才看了第一句话心里有闪现了无数个问…...
@TransactionalEventListener的使用和实现原理
一、问题描述 平时我们在完成某些数据的入库后,发布了一个事件,此时使用的是EventListener,然后在这个事件中,又去对刚才入库的数据进行查询,从而完成后续的操作。例如(数据入库>对入库数据进行查询审核…...
没计算机基础,就是评职称用的,软考中级哪个好考啊?
那必须把系统集成项目管理工程师安排上! 题目也不难,主要弄清楚47个过程的输入输出,还有工具的使用,几乎很多题都是按照这逻辑来的。 建议可以去网上、刷题APP上,多薅点资料和真题,集成是热门科目&#x…...
数字化战略,如何解读企业财务报表
01 财务数字化管理 第一,财务基本信息化建设。比如财务系统、财务共享中心等通过数字化的手段提升财务会计核算、财务流程管理效率,解决流程性管理的问题。 第二,利用各类商业智能 BI 分析、数据分析的手段把企业的所有行为都进行量化对比&…...
JAVA14新特性
JAVA14新特性 概述 Oracle在2020年3月17日宣布JAVA14 全面上市,JAVA14通过每六个个月发布一次新功能,为企业和开发人员社区提供增强功能,继续了Oracle加快创新的承诺. 最新的JAVA开发工具包提供了新功能,其中包括两项备受期待的新预览功能,实例匹配的匹配模式(JEP 305) 和记录…...
Google SEO优化的10大误区
以下是 Google SEO 优化的十大误区: 1、关键词堆砌: 过度使用关键词,使得内容不自然,难以阅读,同时也会被搜索引擎认为是垃圾信息,影响网站排名。 2、内容质量差: 质量差的内容会降低用户的体…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...















