Unity快速上手系列1之:2D物理弹球

news2025/1/30 16:31:10

大家好。

以“跳一跳”为开端,微信小游戏从前几年起以迅雷不及掩耳盗铃儿响叮当之势席卷了用户的手机。从创意小游戏,到页游遗风的挂机游戏,一时间百花齐放。
当然,前者说是创意,其实绝大部分也就是直接把其他平台上的游戏模式搬到H5上而已,例如经典的三维弹球。
而作为物理引擎的代表作品,实现一款三维弹球作品对初学者的锻炼还是挺大的。这也是写这篇小文的主要目的。

制作此游戏分为两个大的步骤,一是场景搭建,二是脚本编写。下面我们就来一起逐步完成这款小游戏。

场景搭建:游戏属于2D游戏,所以场景我们用2D精灵(Sprite)来搭建


一.砌墙


首先搭建一圈2D碰撞器作围墙,限制小球活动范围:


所有的墙都要在2D碰撞器内添加拖入弹性物理材质,上下墙不添加 

 

二.铺路

在小球外部活动范围内搭建触发器,之后将在触发器中获得寻路效果:


可创建一个空物体进行管理

 

 

三,枪口

枪口(Muzzle)用来定位小球发射的地方,枪口有个子物体阀门(Valve),作用为阻挡已发射的小球被弹回枪口:

枪口需要添加LineRenderer组件,用来绘制瞄准线,阀门需要添加2D碰撞器


四.分数显示
创建一个空物体Score,它的子物体CurrentScore才是用来显示分数的Text:

 

 

五.小球管理

创建一个空物体Balls来管理所有的小球,使用2D精灵创建一个小球 

六.关卡设置

在场景内一共搭建9*6个小格子,每个小格子都用来随机生成敌人,实行分层管理,每层6个,共9层:

 

注意:绿色小方框只是为了教程更加直观特意加的,实际开发时请移除,小格子并未添加除Transform以外的任何组件,因为小格子的作用就是定位,游戏运行时需要在该位置随机生成敌人; 

七.菜单栏

游戏结束时自动弹出,游戏运行中按”Esc”键也可调用:

八,摄像机定位

由于整个场景都处于固定状态,所以将Canvas设为世界模式:


将摄像机改为正交模式


将固定在整个场景前:

 

九.预制件制作

创建若干个敌人(Enemy)预制件,添加上2D碰撞器和物理弹性材质


创建道具(Stunt)预制件

                                                变大道具BigStunt:碰到后球会变大


                                                复制道具CopyStunt:碰到后增加一个小球

创建小球(Ball)预制件,当碰到复制特效后创建

脚本编写:脚本不多,加上2个状态机也就11个

下期我们将详细讲解是如何实现的。 

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

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

相关文章

5.8.2 TCP报文段首部格式

5.8.2 TCP报文段首部格式 TCP报文段首部格式在很大程度上体现了TCP协议的功能 一、数据封装过程 如图 应用层报文传送到传输层之后,加上TCP报文段的首部构成了TCP数据传送单位,我们称之为TCP报文段。在发送时TCP报文段是作为IP数据报的数据部分&#…

linux虚拟内存管理

目录 虚拟内存分布 进程虚拟内存空间的管理 内核如何划分用户态和内核态虚拟内存空间 内核如何管理虚拟内存区域 定义虚拟内存区域的访问权限和行为规范 关联内存映射中的映射关系 虚拟内存区域在内核中是如何被组织的 程序编译后的二进制文件如何映射到虚拟内存空间中 …

探索图像处理的利器——OpenCV

目录 引言: 一、OpenCV简介: 二、OpenCV的特点: 三、OpenCV的应用领域: 四、实际案例: 结论: 引言: 在当今信息化的时代,图像处理已经成为了日常生活中不可或缺的一部分。从社…

4742. 电(acw每日一题)

来源:Google Kickstart2022 Round H Problem C 题目描述 某城市有 N个电力节点,编号 1∼N。 这些电力节点形成的电力网络,可以看作一个 N 个节点 N−1 条边的连通图。 每个电力节点都有一个固定的电容,其中第 i 个节点的电容为…

CSS 备忘录-基础内容

目录 1、CSS的基本结构 2、样式表的来源以及优先级 3、选择器的优先级 4、源码顺序 5、px、em、rem单位 6、视口相对单位 7、使用 calc() 来定义属性值 8、一些无单位的属性 9、自定义属性 10、使用 JavaScript 来动态修改自定义属性 11、overflow 属性 12、子元素…

【单片机】STM32单片机的各个定时器的定时中断程序,标准库,STM32F103

文章目录 定时器1_定时中断定时器2_定时中断定时器3_定时中断定时器4_定时中断定时器5_定时中断 高级定时器和普通定时器的区别(https://zhuanlan.zhihu.com/p/557896041): 定时器1_定时中断 TIM1是高级定时器,使用的时钟总线是R…

bochs编译安装

编译命令 ./configure --prefix‘/usr/local/bochs2.7’ --enable-debugger --enable-disasm --enable-iodebug --enable-x86-debugger --with-x --with-x11 make sudo make install 配置文件 bochsrc # configuration file generated by Bochs plugin_ctrl: unmapped1, biosde…

让开源项目从易用到好用 | 亚马逊的开源文化

亚马逊的领导力准则是亚马逊文化的核心,它如同亚马逊的 DNA 融入贯穿每一个重要决策,深深影响着每一位亚麻人、影响着每一位亚马逊的客户、合作伙伴以及每一位亚马逊云科技的构建者。同时,亚马逊的领导力准则对亚马逊与开源的互动方式也产生着…

如何设计一个文件系统?需要考虑哪些因素?

文件系统的实现 在对文件有了基本认识之后,现在是时候把目光转移到文件系统的实现上了。之前用户关心的一直都是文件是怎样命名的、可以进行哪些操作、目录树是什么,如何找到正确的文件路径等问题。而设计人员关心的是文件和目录是怎样存储的、磁盘空间…

数字孪生和GIS融合会为城市交通带来哪些便利?

数字孪生和GIS的融合对于城市交通领域带来了诸多便利,从智能交通管理到出行体验的提升,为城市交通带来了全新的发展机遇。 首先,数字孪生技术与GIS的结合可以实现智能交通管理。通过GIS建立城市交通网络的数字孪生模型,可以实时模…

程序员找工作难!拿到外包公司的 offer 我应该去么?

引言 前一阵子有一个帖子引起了非常广泛的讨论,描述的就是一个公司的外包工作人员,加班的时候因为吃了公司给员工准备的零食,被公司的HR当场批评!这个帖子一发出来,让现在测试行业日益新增的外包公司备受关注。那么外包公司和非外…

Qt开发1--QCustomPlot的第一个示例

本文记录了在Linux上使用QCustomPlot进行一个基本绘制所需的完整过程,包括如何使用qtcreator,编辑ui以及编写相应的C代码。以下是详细步骤: 1、使用qtcreator启动开发环境: [blctrlmain-machine qt]$ qtcreator 启动后&#xf…

GBDT精讲

GBDT算法的流程 首先GBDT是通过采用加法模型(即基函数的线性组合),以及不断减小训练过程产生的残差来达到将数据分类或回归的算法。 GBDT通过多轮迭代,每轮迭代产生一个弱分类器,每个分类器在上一轮分类器的梯度(如果损失函数是平方损失函数…

Quiz 4: Functions | Python for Everybody 配套练习_解题记录

文章目录 课程简介Quiz 4: Functions 单选题(1-9)编程题Exercise 4.6 课程简介 Python for Everybody 零基础程序设计(Python 入门) This course aims to teach everyone the basics of programming computers using Python. 本课…

JAVA2

文章目录 前言 前言 创建,编译java(每4修改一次就要重新编译!) 第一个程序: 解决中文乱码问题: 效果: 总结:

管理类联考——英语——趣味篇——词根词汇——按频次分类——高频词汇——List1

优化原书记忆方法,轻松搞定考研单词 摒弃了传统的以字母顺序排序的方法,结合近20年考研真题,通过电脑搜索等方法对核心词进行科学统计,将核心词有机地分为高频词汇、常考词汇、中频词汇、低频词汇等4大部分,同时还补充…

一个三极管和稳压管构成的简易稳压电源

一个三极管和稳压管构成的简易稳压电源 先看电路 原理分析: 实际使用中可以加入合适的滤波电容。 上面的电路原理看着比较简单,但还是有不少要注意的地方。 来看看仿真电路的结果: 可以看到,输出的电压并不是我们想要的结果&am…

高压线路距离保护程序逻辑原理(五)

六、系统振荡的判断与振荡闭锁程序逻辑框图 (一)系统振荡概述 电力系统的振荡大致可以分为两种情况:一种是静稳破坏引起系统振荡,另一种是由于系统内故障切除时间过长,导致系统的两侧电源之间的不同步而引起的系统振…

【单片机】MSP430单片机,1.3寸 IIC OLED ,显示驱动

文章目录 main.coled.holedfont.h main.c #include <msp430.h> #include "OLED.h"int main( void ) {WDTCTL WDTPW WDTHOLD; /* Stop WDT */if ( CALBC1_8MHZ 0xFF ) /* If calibration constant erased */{while ( 1 ); /* do n…

C++ DAY4

1.思维导图 2.运算符重载 #include <iostream> using namespace std;class Person { private:int age;int *p; public://1.无参构造Person():p(new int(89)){age 18;}//2.有参构造Person(int age,int num){this->age age;this->pnew int(num);}//3.拷贝构造函数…