【Unity项目实战】手把手教学:飞翔的小鸟(7)障碍对象池

news2025/1/24 5:11:36

        承接上一篇:【Unity项目实战】手把手教学:飞翔的小鸟(6)添加障碍,我们已经生成了一个障碍物柱子,并且使得小鸟在越过柱子之后自动获得一分,接下来将继续讲解障碍物的随机生成。

一.脚本控制

        障碍物对象池的实现方法和背景的实现方法差不多,在对象池池中会有5组(当然可以有6、7、8、9组都可以)随机位置障碍物柱子,分别从背景的右边开始出现,等到柱子移动到背景左边超出主角视线时,将柱子收回到对象池中,重复在右边出现。其实说白了就是5组柱子交替出现和回收的过程。说完原理,我们就可以在GameControl对象中新建一个脚本(命名为:ColumnPool)来专门控制障碍物对象池:

        首先在初始化对象池:

        随后我们往对象池中填充障碍物:

         下一步,我们要在Update函数中添加计时器,用来检查小鸟前面是否需要重新生成柱子,这里就需要两个变量,一个变量(命名为:timeSinceLastSpawned)用来记录生成上一个障碍物已经过去多久了,一个变量(命名为:spawnRate)用来记录每隔多长时间(例子的时间可以随意改)就生成一个障碍物:

         下一步,在Update函数中开始计数,当游戏还没结束的同时timeSinceLastSpawned也已经超过了4f之后,就开始生成障碍物:

         生成的障碍物中我们设定为固定出现在背景外的右边,然后从右往左运动,直到来到背景外的左边回收资源,所以X坐标可以固定不变都是背景外的左边,而Y坐标则可以随机生成,故我们还需要几个变量来控制障碍物出现的位置:

         然后当障碍物条件满足时,重新计时并且生成随机Y轴坐标:

          获取到一个固定的X坐标和随机的Y坐标,我们就可以将障碍物对象池中的坐标都进行指定了:

         编程完成后,我们回到Unity中去,并将柱子对象拖拉到GameControl的columnPrefab中,实现绑定:

         拖拉完成后,我们保存下项目存档,把调试用的柱子拉出窗口外,以免挡住了小鸟的去路:

        并且开始运行游戏,查看随机的Y坐标是否合理:

        运行起来,你就会发现,有些柱子的坐标过高了,这时候就需要手动去调整下随机Y坐标的范围,具体调成什么样就看你自己了:

 

        调试成我们想要的结果后,整个项目就已经结束了,感谢各位一直以来的跟踪和支持~整个项目都是我百忙之中抽空更新了,拖拉了很久,但最后还是完成了,也希望这个教程对你们有所帮助~ 

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

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

相关文章

Centos7设置静态IP

Centos7设置静态IP及修改后不能联网问题解决方式 虚拟机外部配置1、打开Vmware选择虚拟网络编辑器菜单2、获取管理员权限,选择VMnet8,并点击还原默认设置,弹窗选择“是”。3、修改VMnet8的参数4、NAT设置5、确认虚拟机为NAT模式 虚拟机内部配…

数据流图(DFD)

目录 第十二章、数据流图(DFD)1、数据流图基本概念2、数据字典3、数据平衡原则4、数据流图试题解题技巧4.1、试题一4.2、试题二 第十二章、数据流图(DFD) 1、数据流图基本概念 数据流图是用于表示系统逻辑模型的一种工具。从数据…

【Swift】Swift和Objective-c混编

1.介绍 Swift和Objective-C都是苹果公司的编程语言,它们可以在同一个项目中同时使用。这种混编方式被称为“混合编程”(Mixed Programming)。 在混合编程时,我们需要用到一个桥接文件(Bridging Header)&a…

AfxMessageBox的两种用法

1 函数简介 函数声明如下: int AfxMessageBox(LPCTSTR lpszText,UINT nType MB_OK,UINT nIDHelp 0 ); int AFXAPI AfxMessageBox(UINT nIDPrompt,UINT nType MB_OK,UINT nIDHelp (UINT ) -1 );1.1 参数 lpszText 将显示在消息框的字符串。 nType 消息框…

使用Selenium模拟百度登录

前言 前面我已经安装好了Selenium并模拟成功了一下打开百度页面并进行查询,让我这个python初学者信心倍增,今天再来试一试百度登录 正文 把打开百度的代码放到构造方法中 ps:那个文件目录是用于后面滑块验证图片保存的。 def __init__(self):driver w…

Python实战基础8-列表

一、列表的基本使用 1.列表的格式 定义列的格式:[元素1,元素2,元素3,...,元素n] 变量tmp的类型为列表 tmp [XiaoChen,180,66.0] 列表中的元素可以是不同类型的 2.使用下标获取列表元素 namesList [XiaoChen,Xia…

上海AI lab提出VideoChat:可以与视频对话啦

夕小瑶科技说 原创 作者 | 小戏、ZenMoore 视频相比语言、图像,是更复杂更高级的一类表征世界的模态,而视频理解也同样是相比自然语言处理与计算机视觉的常见工作更复杂的一类工作。在当下大模型的洪流中,自然而然的想法就是大规模语言模型…

子矩形计数(多少个面积为k的全1子矩阵)【思维,两个一维数组相乘得到矩阵,计算一维数组中长度为x的全1子段】

3617. 子矩形计数&#xff08;多少个面积为k的全1子矩阵&#xff09; 输入样例1&#xff1a; 3 3 2 1 0 1 1 1 1输出样例1&#xff1a; 4输入样例2&#xff1a; 3 5 4 1 1 1 1 1 1 1 1输出样例2&#xff1a; 14#include <bits/stdc.h> using namespace std; #define …

Redisson锁的分析

文章目录 一、分布式锁概念1、实现思路2、出现死锁问题如何避免死锁问题 锁过期和释放当前不属于当前线程的锁解决不是加锁线程释放锁锁的过期时间如何解决 二、Redisson分布式锁Redis的部署方式对锁的影响集群模式Redlock实现高可靠的分布式锁 三、代码分析V1代码无锁V2代码单…

【C++从0到王者】第二站:类和对象(中)赋值运算符重载

文章目录 一、运算符重载1.运算符重载的使用2.运算符重载的注意事项 二、赋值运算符重载1.复制拷贝与拷贝构造2.赋值运算符重载的格式3.赋值运算符重载的实现4.赋值运算符重载的注意事项 一、运算符重载 1.运算符重载的使用 当我们实现一个日期类的时候&#xff0c;我们有时候…

Angular开发之——Angular打包部署项目(04)

一 概述 ng build 构建应用lite-server介绍及安装lite-server部署应用IIS管理器部署应用 二 ng build 构建应用 2.1 执行如下指令构建应用 ng build2.2 构建完成后&#xff0c;会创建一个 dist 文件夹 2.3 直接打开index.html会出错(需要借助于服务器部署) 三 lite-server介…

(二)PUN 2基本教程

一、介绍 PUN 基础教程是一个基于 Unity 的教程。我们将使用 Photon Cloud 开发第一个简单的 PUN 2 多人游戏。目标是同步每个玩家的动画角色、健康值和基本光线投射。 1.概述 本教程将从一个空项目开始&#xff0c;逐步指导您完成整个创建过程。在此过程中&#xff0c;将解释…

Halcon 形态学 开发案例 (开运算opening(先腐蚀再膨胀)、闭运算closing(先膨胀再腐蚀))

文章目录 1 形态学概念2 开运算 opening2.1 算子介绍2.2 开运算 开发案例3 闭运算 closing3.1 算子介绍3.2 闭运算 开发案例4 示例原图1 形态学概念 图像的形态学处理是对图像的局部像素进行处理,用于从图像中提取有意义的局部图像细节。 通过改变局部区域的像素形态,以对目…

数据结构与算法基础知识

线性结构篇 什么是数据结构与算法 回顾我们之前的C语言程序设计阶段&#xff0c;我们已经接触过基本数据类型&#xff0c;并且能够使用结构体对数据进行组织&#xff0c;我们可以很轻松地使用一个结构体来存放一个学生的完整数据&#xff0c;在数据结构学习阶段&#xff0c;我…

Linux篇1

Linux 1. 概述1.1 内容概要1.2 Linux发展1.3 Linux对比Windows 2. 虚拟机下安装CentOS系统2.1 下载安装VMware2.1.1 官网下载VMware软件2.1.2 安装VMware 2.2 下载CentOS镜像2.3 创建虚拟机&#xff08;在虚拟机中安装CentOS&#xff09;2.3.1 创建虚拟硬件环境2.3.2 安装CentO…

从匆匆的一瞥,到两小时泯灭(SQL注入)

从匆匆的一瞥&#xff0c;到两小时泯灭&#xff08;SQL注入&#xff09; 惊鸿一瞥用户名提示jsBase64.js文件手搓轮子&#xff08;python&#xff09;反复搓轮子&#xff08;python-tamper&#xff09; 惊鸿一瞥 昨天晚上分别开了我相识已久的女友&#xff0c;再度回到了单身狗…

暗月内网靶场渗透笔记

简介 靶场下载地址&#xff1a; 靶场地址&#xff1a; https://pan.baidu.com/s/12pSYxSU-ZmurQ9–GFiaXQ 提取码: 3p47虚拟机网络设置&#xff1a; 靶场拓扑图&#xff1a; 靶机账号密码&#xff1a; 信息收集 内网扫描 靶机就在本地&#xff0c;直接进行本地内网扫描即可…

朋友去华为面试,轻松拿到30K的Offer,羡慕了......

最近有朋友去华为面试&#xff0c;面试前后进行了20天左右&#xff0c;包含4轮电话面试、1轮笔试、1轮主管视频面试、1轮hr视频面试。 据他所说&#xff0c;80%的人都会栽在第一轮面试&#xff0c;要不是他面试前做足准备&#xff0c;估计都坚持不完后面几轮面试。 其实&…

OpenGL高级-几何着色器

几何着色器的介绍 在顶点和片段着色器之间有一个可选的着色器&#xff0c;叫做几何着色器(Geometry Shader)。几何着色器以一个或多个表示为一个单独基本图形&#xff08;primitive&#xff09;的顶点作为输入&#xff0c;比如可以是一个点或者三角形。几何着色器在将这些顶点发…

C++14中lambda表达式新增加的features的使用

lambda表达式是在C11中引入的&#xff0c;它们可以嵌套在其它函数甚至函数调用语句中&#xff0c;C11中lambda表达式的使用参考&#xff1a;https://blog.csdn.net/fengbingchun/article/details/52653313 lambda表达式语法如下&#xff1a;除capture和body是必须的&#xff0c…