unity愤怒的小鸟学习制作(一)

news2025/1/17 1:00:13

基础知识已经差不多了,现在开始模仿敲代码然后在模仿中熟悉软件和语法

视频链接和素材如下:视频


目录

    • 第一部分:游戏逻辑
      • 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里面,下面的最大距离可以自己修改

在这里插入图片描述
效果如下
在这里插入图片描述
有点晕,还是改天继续吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/497714.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【源码分析】从源码层面深度剖析Redisson实现分布式锁的原理

快速入门 引入redisson依赖 <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.16.0</version> </dependency>编写测试代码 public class RedissonTest {private static RedissonC…

SubMain GhostDoc Enterprise v2022 Crack

GhostDoc 是一个 Visual Studio 扩展&#xff0c;适用于需要使用可自定义模板从源代码生成 XML 注释、维护干净和最新文档、生成多种格式的帮助文档、在 Visual Studio 中使用智能源代码拼写检查器等的开发人员. GhostDoc 还有助于自动生成干净、有用的干净代码文档&#xff0c…

scratch统计距离学校远近 中国电子学会图形化编程 少儿编程 scratch编程等级考试四级真题和答案解析2023年3月

目录 scratch统计距离学校远近 一、题目要求 1、准备工作 2、功能实现 二、案例分析

Elasticsearch:结合两全其美:Elasticsearch 与 BM25 和 HNSW 的混合搜索

就搜索算法而言&#xff0c;没有万能的解决方案。 不同的算法在不同的场景下效果更好&#xff0c;有时需要算法的组合才能达到最好的效果。 在 Elasticsearch 中&#xff0c;一种流行的组合搜索算法的方法是使用混合搜索&#xff0c;将用于文本搜索的 BM25 算法与用于最近邻搜索…

数据结构与算法十 并查集

一 并查集 并查集是一种树型的数据结构 &#xff0c;并查集可以高效地进行如下操作&#xff1a; 查询元素p和元素q是否属于同一组合并元素p和元素q所在的组 1.1 并查集结构 并查集也是一种树型结构&#xff0c;但这棵树跟我们之前讲的二叉树、红黑树、B树等都不一样&#xf…

【Stable Diffusion】基本概念之hypernetwork

1.基本概念 hypernetwork&#xff0c;中文名为超网络&#xff0c;是一种神经网络架构,它允许动态生成神经网络的参数(权重)。简而言之,hypernetwork可以生成其他神经网络。 在Stable Diffusion中,hypernetwork被用于动态生成分类器的参数&#xff0c;为Stable Diffusion模型添加…

牛客刷SQL题Day5

SQL69 返回产品并且按照价格排序 select prod_name , prod_price from Products where prod_price between 3 and 6 select prod_name , prod_price from Products where 6>prod_price and prod_price >3 踩坑1&#xff1a; between......and.......包括边界。 踩坑2&am…

ES6之箭头函数

文章目录 前言一、定义二、简化1.当函数参数只有一个时2.当函数体只有一条return语句时 三、注意1.箭头函数的this2.不能作为构造函数实例化对象3.不能使用argument变量 总结 前言 简单的讲&#xff0c;箭头函数是将原function关键字和函数名删掉的一种简写函数形式。 一、定义…

二维体光子晶体的平面波展开法代码

%书上的代码&#xff0c;和FEM符合的更好 %在这个代码里试着把单位原胞的相对介电常数分布画出来 %这个代码的单位原胞的中心就是(0,0)点&#xff0c;也就是坐标原点 %The program for the computation of the PhC photonic %band structure for 2D PhC. %Parameters of the st…

Jvm --java虚拟机(上)

为什么学习jvm 如果你这辈子只甘心做一个平庸的Java码农&#xff0c;那么你可以利用阅读本文的时间去学习其他新的技术知识&#xff0c;但是如果你想成为一个更更更更优秀的中高级程序员&#xff01;那么请继续阅读本文&#xff0c;希望这篇文章会对你有所帮助&#xff0c;那么…

国考省考结构化面试:综合分析题,名言哲理(警句观点启示)、漫画反驳题等

国考省考结构化面试&#xff1a;综合分析题&#xff0c;名言哲理&#xff08;警句观点启示&#xff09;、漫画反驳题等 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能&#xff0c;附带行测和申论&#xff0c;而常规国考省考最重要的还是申论和行测&a…

从面向过程到面向对象

目录 1、抽象 2、UML类图 3、类定义 4、类成员函数 &#xff08;1&#xff09;构造函数&#xff08;constructor&#xff09; &#xff08;2&#xff09;析构函数&#xff08;destructor&#xff09; 5、对象实现 6、封装 7、getter、setter方法 为什么要从面向过程转…

C++实现ini配置文件解析——API设计

什么是配置文件 INI文件&#xff08;Initialization File&#xff09;是一种文本文件格式&#xff0c;通常用于存储配置数据。INI文件最初由Microsoft在Windows系统中引入&#xff0c;用于存储应用程序的配置信息。 INI文件的结构相对简单&#xff0c;由一系列的节&#xff0…

国外15家值得关注的AI创业公司

文 | 小戏、iven 星星之火&#xff0c;可以燎原。 在大模型横空出世的这个疯狂的春天&#xff0c;一场关于 AI 产品的革命也正在席卷全球。这边是大公司一个接一个模型搞军备竞赛&#xff0c;那边是各路豪强纷纷下场创业招兵买马。那么&#xff0c;除了咱们耳熟能详的 OpenAI 以…

数字化转型导师坚鹏:企业数字化营销

企业数字化营销 ————助力零售业务向批量化开发转变&#xff0c;对公业务向智慧化转变 课程背景&#xff1a; 很多企业存在以下问题&#xff1a; 不清楚数字化营销对企业发展有什么影响&#xff1f; 不知道如何提升企业数字化营销能力&#xff1f; 不知道企业如何开…

面试官:一千万的数据,你是怎么查询的

面试官&#xff1a;一千万的数据&#xff0c;你是怎么查询的&#xff1f; 前言 面试官&#xff1a;来说说&#xff0c;一千万的数据&#xff0c;你是怎么查询的&#xff1f;B哥&#xff1a;直接分页查询&#xff0c;使用limit分页。面试官&#xff1a;有实操过吗&#xff1f;B…

word@通配符@高级搜索查找@替换@中英文标点符号替换

文章目录 高级搜索通配符批量选中引用序号上标调整搜索替换作用范围设置&#x1f388;通过样式选择作用区域通过鼠标选择作用区域 高级替换操作顺序 标点符号替换&#x1f388;将英文逗号替换为中文逗号使用普通查找和替换&#xff1a;使用通配符替换 将英文句点替换为中文句号…

【Stable Diffusion】ControlNet基本教程(二)

接上篇【Stable Diffusion】ControlNet基本教程&#xff08;一&#xff09;&#xff0c;本篇介绍两个ControlNet常见的基本用法&#xff0c;更多用法欢迎关注博主&#xff0c;博主还会更新更多有趣的内容。 3.ControlNet基本用法 3.1漫画线稿上色 &#xff08;1&#xff09;上传…

Mysql索引(3):索引分类

1 索引分类 在MySQL数据库&#xff0c;将索引的具体类型主要分为以下几类&#xff1a;主键索引、唯一索引、常规索引、全文索引。 分类含义特点关键字主键索引针对于表中主键创建的索引 默认自动创建, 只能有一个 PRIMARY 唯一索引 避免同一个表中某数据列中的值重复可以有多…

Graph Embeddings—随机游走基本概念

Random Walk Approaches for Node Embeddings 一、随机游走基本概念 想象一个醉汉在图中随机的行走&#xff0c;其中走过的节点路径就是一个随机游走序列。 随机行走可以采取不同的策略&#xff0c;如行走的方向、每次行走的长度等。 二、图机器学习与NLP的关系 从图与NLP的…