当前位置: 首页 > news >正文

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&#xff0c…...

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总结 背景 大家好&#xff0c;今天给大家分享一个在2022年出去面试Java几乎必问的一个技术&#xff0c;那就是seata。什么&#xff1f;&#xff1f;你才看了第一句话心里有闪现了无数个问…...

@TransactionalEventListener的使用和实现原理

一、问题描述 平时我们在完成某些数据的入库后&#xff0c;发布了一个事件&#xff0c;此时使用的是EventListener&#xff0c;然后在这个事件中&#xff0c;又去对刚才入库的数据进行查询&#xff0c;从而完成后续的操作。例如&#xff08;数据入库>对入库数据进行查询审核…...

没计算机基础,就是评职称用的,软考中级哪个好考啊?

那必须把系统集成项目管理工程师安排上&#xff01; 题目也不难&#xff0c;主要弄清楚47个过程的输入输出&#xff0c;还有工具的使用&#xff0c;几乎很多题都是按照这逻辑来的。 建议可以去网上、刷题APP上&#xff0c;多薅点资料和真题&#xff0c;集成是热门科目&#x…...

数字化战略,如何解读企业财务报表

01 财务数字化管理 第一&#xff0c;财务基本信息化建设。比如财务系统、财务共享中心等通过数字化的手段提升财务会计核算、财务流程管理效率&#xff0c;解决流程性管理的问题。 第二&#xff0c;利用各类商业智能 BI 分析、数据分析的手段把企业的所有行为都进行量化对比&…...

JAVA14新特性

JAVA14新特性 概述 Oracle在2020年3月17日宣布JAVA14 全面上市,JAVA14通过每六个个月发布一次新功能,为企业和开发人员社区提供增强功能,继续了Oracle加快创新的承诺. 最新的JAVA开发工具包提供了新功能,其中包括两项备受期待的新预览功能,实例匹配的匹配模式(JEP 305) 和记录…...

Google SEO优化的10大误区

以下是 Google SEO 优化的十大误区&#xff1a; 1、关键词堆砌&#xff1a; 过度使用关键词&#xff0c;使得内容不自然&#xff0c;难以阅读&#xff0c;同时也会被搜索引擎认为是垃圾信息&#xff0c;影响网站排名。 2、内容质量差&#xff1a; 质量差的内容会降低用户的体…...

.netCHARTING 10.5 dotnetcharting Crack

.net图表 10.5 为柱形图和条形图添加拐角半径控件。 5月 05&#xff0c; 2023 - 16&#xff1a;18新版本 特征 直角或直线组织连接线 - 默认情况下&#xff0c;通过以直角绘制组织连接线来增强组织连接线的显示方式。您可以使用直线选项更改此默认值&#xff0c;并直接在点…...

单元,集成,系统,验收,回归测试

测试流程 单元测试—集成测试–系统测试—验收测试 单元测试 通常由程序员自己来进行单元测试。程序员编写代码后&#xff0c;应该先自行进行单元测试&#xff0c;验证代码的正确性和质量。单元测试可以通过手动测试或自动化测试工具进行。 集成测试 集成测试&#xff1a;集成…...

云计算适合大专生学吗?

云计算适合大专生学吗&#xff1f; 对于大专毕业生来说&#xff0c;云计算的确是一个不错的选择&#xff0c;因为云计算技术应用专业&#xff0c;主要就是专科院校在办学。不管你是计算机相关专业的&#xff0c;还是零基础想学习都是可以的&#xff1b;原因就在于云计算这门专业…...

【系统集成项目管理工程师】项目风险管理

&#x1f4a5;十大知识领域&#xff1a;项目风险管理 项目风险管理包括以下 6 个过程: 规划风险管理识别风险实施定性风险分析实施定量风险分析规划风险应对控制风险 一、规划风险管理 定义如何实施项目风险管理活动的过程 输入工具与技术输出项目管理计划项目章程干系人登记册…...

Quartz2D之Path使用初步

我们直接看以下代码&#xff1a; // // MyQuartzView.m // QuartzTest // // Created by zenny_chen on 12-2-21. // Copyright (c) 2012年 GreenGames Studio. All rights reserved. //#import "MyQuartzView.h"// Quartz2D以及Core Animation所需要的头文件 #…...

Adobe考试

Adobe考试又称为Adobe国际认证和Adobe认证考试&#xff0c;Adobe国际认证(英文:Adobe Certified Professional)是Adobe公司CEO签发的权威国际认证体系,旨在为用户提供Adobe软件的专业认证。 Adobe考试覆盖了各种Adobe软件&#xff0c;包括Photoshop、Illustrator、InDesign、P…...

三线城市程序员的薪资待遇怎么样?我分享提高java技术水平的几个方法

今天想和大家聊聊在三线城市&#xff0c;程序员的薪资待遇水平到底是怎样的。随着科技行业的迅速发展&#xff0c;IT行业成为了当今越来越受欢迎的行业之一。在过去的几年里&#xff0c;IT行业中需求最大的工作是与开发相关的工作&#xff0c;比如java&#xff0c;包括前端和手…...

马哈鱼SQLFLow对SQL Server OUTPUT Clause 的数据血缘分析

SQL Server OUTPUT Clause 会对 SQL 语句的血缘分析产生影响&#xff0c;如果忽略对 OUTPUT Clause 的分析&#xff0c;那么将漏掉一些关键的数据血缘关系&#xff0c;从而影响数据血缘分析的准确性&#xff0c;进而影响组织的数据治理质量。 Gudu SQLFlow 可以对 SQL Server …...

5/8~5/9总结

JavaFX中的ListView是一个可滚动的列表控件&#xff0c;它可以用来显示一组数据。下面是ListView的详细使用步骤&#xff1a; 1. 导入JavaFX相关类库 java import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.scene.control…...

java 数组创建的方法

数组是一个由一组元素组成的集合&#xff0c;我们可以用一个数组来表示集合。 java中最基本的数据类型是字符串&#xff0c;其长度是固定的&#xff0c;且不可变&#xff0c;一个字符串只能以一个数字开头。 在 Java中我们可以通过 myConst关键字来指定数组的长度。下面就看一下…...