2D Game Kit在unity的使用
本文参考:
如何制作游戏?【不需要编程 __】新手30分钟 学会制作2D游戏!_ 如何制作游戏 _ unity教学 _ 制作游戏 _ 2d游戏_哔哩哔哩_bilibili
1、下载2d game kit
新建一个unity工程,进入该工程后,在Window -> Asset Store中搜索 2d game kit。
然后下载导入到Unity中。
此时会报错,报错信息类似如下:
Assets\2DGamekit\Utilities\Editor\RuleTileEditor.cs(69,10): error CS0433: The type 'RuleTile' exists in both 'Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' and 'Unity.2D.Tilemap.Extras, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
这是因为在导入的2d game kit和使用Unity 2D创建的项目中出现了相同的类名RuleTile。
此时使用对2D Game Kit中重名的文件进行重构。
具体参考:Unity 导入项目报错: error CS0433: The type ‘RuleTile‘ exists in both ‘Assembly-CSharp, Version=0.0.0.0,..._the type 'jsonmapper' exists in both 'assembly-csh-CSDN博客
2、 启动第一个demo
(1)在Kit Tools下选择Create New Scene

(2)点击Create后,就会自动导入Scene如下图所示:

点击启动,就可以运行Game了,运行用到的按键罗列如下:

空格:跳起来
S:蹲下来
O:发射子弹
K:用刀横扫千军
3、设计场景(scene)
(3.1)必备知识
(3.1.1)打开scene light

否则场景下会非常昏暗。
(3.1.2)移动场景
有时候scene是非常长的,此时设计时需要移动场景
可以Alt+鼠标左键 进行拖动,或者鼠标右键进行拖动。
(3.1.3)移动玩家
有时候场景设计了很多的元素,每次测试时不可能让玩家从头开始玩,此时可以将玩家移动到新设计的场景中,测试新设计的场景即可。
选择左上角的Move Tool,然后框选玩家 拖动到指定的位置。

(3.2)选择瓷盘托盘
位置:Window -> Tile Palette,

有两种类型可供选择:

使用时,鼠标左键选择图片,然后鼠标在Scene中移动时就会拖着那个图片了,在scene中鼠标左键拖拽即可添加该图片。如果想要删除图片,则Shift按住+鼠标左键拖拽即可实现删除。

我简单地创建了如下的示例:

(3.3)选择场景元素
位置:Assets -> 2DGamekit -> Art -> Sprites -> Environment

我简单地创建了如下的示例:

(3.4)添加陷阱
场景元素位置:Assets -> 2DGamekit -> Prefabs -> Environment

Acid是毒液:当玩家掉下去的话就会死掉。

Spikes是尖刺:当玩家碰到之后就会扣血。

(3.5)添加移动平台
位置:Assets -> 2DGamekit -> Prefabs -> Interactables

添加后可以设置移动的距离以及方向:

添加完毕之后的测试效果:
接下来,添加自定义多Node的移动平台。

在组件中,选择"Add Node"就可以添加多段的移动路径了,选择"Preview position"可以预览移动的路径。
在该组件中,"Is Moving At Start"是未被勾选的,这就意味着该移动平台一开始并不会移动,需要另一个组件触发一下。
选择SingleUseSwitch,然后在该组件的On Enter()事件处理中,添加Moving Platform对象,并为该对象指定StartMoving函数。
(3.6)添加可摧毁的墙
位置:Assets -> 2DGamekit -> Prefabs -> Interactables,选择DestructibleWall

在右侧的属性栏中,设置"Starting Health"的值决定需要击打的次数。
(3.7)添加门(可关闭和打开)

位置:Assets -> 2DGamekit -> Prefabs -> Interactables,选择Door,但是这个门是不会自动打开或者关闭的。
需要添加PressurePad来控制的门的打开或关闭,对PressurePad的操作如下:
首先,选中PressurePad,在Boxes的On Pressed()中添加新的事件。

其次,将Door对象拖入新增的事件的对象参数中,如下图所示:

接着,选择该事件的函数为Animator -> Play(string)

然后,输入Play的入参为DoorOpening,如上上一张图所示。
该参数对应的动画位于Assets -> 2DGamekit -> Art -> Animatiions -> AnimationClips -> Interactables下。
下面就是玩家踩中PressurePad时,门打开的场景:

(3.8)创建敌人
位于:Assets -> 2DGamekit -> Prefabs -> Enemies,有两种敌人可供挑选:
- Chomper:这个是近战的敌人
- Spitter:这个是远程攻击的敌人

Chomper的参数设置:
初始化的Chomper如下,青色的圆圈代表它的视野范围:

可以通过View Fov参数调节它的视野角度,只让它看到前方的物体。
通过View Distance参数可以调节视野的远近。

(3.9)可推动的box
位于:Assets -> 2DGamekit -> Prefabs -> Interactables,选择pushtableBox,

此时,在Scene有一个可以推动的box,但是并不会对敌人产生伤害。

该box会一直在敌人的上面,但是没有对敌人产生伤害。
此时需要:
1)给pushtableBox添加组件Damager脚本
2)修改offset、size的大小如下
3)hittable layers选择可伤害的对象为Enemy

(3.10)收集钥匙打开门
首先,在Assets -> 2DGamekit -> Prefabs -> Interactables下选择Door和Key,如下图所示:
此时在游戏中,碰触Key和Door都不会有任何反应。
接着,Assets -> 2DGamekit -> Prefabs -> UIPrefabs中添加KeyCanvas到Hierarchy的UI下。运行游戏后,就会在Scene的右上角出现3个key。

然后,我们需要实现碰触Key后就收集Key的功能。
我们先看一下主角Ellen可以占有的道具,在Inventory Controller脚本下可以看到所有的道具名称。
在Key对象下,添加Inventory Item的脚本,在脚本中进行如下配置:
Inventory Key的名称设置为Key1,刚好对应主角可以获取的道具名称。
Layers设置为Player,表示只有玩家才能获取key
Disable On Enter勾选一下,表示key被获取就消失掉
Clip是获取一瞬间的音效
在Circle Collider 2D的脚本中,radius调整下大小。
最后,实现收集钥匙后打开门的功能。
添加key1触发事件的对象以及行为。
(3.11)添加加血包
位置:Assets -> 2DGamekit -> Prefabs -> Interactables,选择HealthPickup。
只有在玩家掉血了之后,该加血包才会触发生效。
(3.12)传送门
位置:Assets -> 2DGamekit -> Prefabs -> Interactables,选择Teleporter。

然后需要通过设置告诉传送门,把谁移动到哪里。
1)在游戏刚开始的位置再添加一个传送门,这个就是目标位置。
2)配置Teleporter的Transition Point脚本
(3.13)对话框
位置:Assets -> 2DGamekit -> Prefabs -> UIPrefabs,添加DialogueCanvas到Hierarchy的UI下。
假设让Teleporter说话,那么针对Teleporter添加Interact On Button 2D的脚本。

Layers就是只针对玩家才说话,说话的内容默认情况下不支持中文。
On Enter配置事件信息,就是触发DialogueCanvas说话,函数配置为:

路漫漫其修远兮,在U3D的道路上吾将上下而求索~~
相关文章:
2D Game Kit在unity的使用
本文参考: 如何制作游戏?【不需要编程 __】新手30分钟 学会制作2D游戏!_ 如何制作游戏 _ unity教学 _ 制作游戏 _ 2d游戏_哔哩哔哩_bilibili 1、下载2d game kit 新建一个unity工程,进入该工程后,在Window -> Ass…...
使用中国大陆镜像源安装最新版的 docker Deamon
在一个智算项目交付过程中,出现了新建集群中的全部 docker server V19 进程消失、仅剩 docker server 的 unix-socket 存活的现象。 为了验证是否是BD产品研发提供的产品deploy语句缺陷,需要在本地环境上部署一个简单的 docker Deamon 环境。尴尬的是&a…...
机器学习原理之 -- 支持向量机分类:由来及原理详解
支持向量机(Support Vector Machine, SVM)是统计学习理论的一个重要成果,广泛应用于分类和回归问题。SVM以其高效的分类性能和良好的泛化能力在机器学习领域中占据重要地位。本文将详细介绍支持向量机的由来、基本原理、构建过程及其优缺点。…...
华为机试HJ8合并表记录
华为机试HJ8合并表记录 题目: 数据表记录包含表索引index和数值value(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照index值升序进行输出。 想法:…...
Leetcode 2043简易银行交易系统
题目描述 简易银行系统 尝试过 中等 相关标签 相关企业 提示 你的任务是为一个很受欢迎的银行设计一款程序,以自动化执行所有传入的交易(转账,存款和取款)。银行共有 n 个账户,编号从 1 到 n 。每个账号的初始余额存储…...
适合职场小白的待办事项管理方法和工具
刚入职场那会儿,我每天都像只无头苍蝇,忙得团团转却效率低下。待办事项像潮水般涌来,会议、报告、客户跟进……每一项都像是悬在头顶的利剑,让我焦虑不堪。我深知,管理好待办事项是职场生存的必修课,但该如…...
相机参数与图像处理技术解析
01. 相机内参和外参的含义?如果将图像放大两倍,内外参如何变化? 相机有两个最基础的数据:内参(Instrinsics)和外参(Extrinsics),内参主要描述的是相机的CCD/CMOS感光片尺寸/分辨率以及光学镜头的系数,外参主…...
Ubuntu20.04安装Prometheus监控系统
环境准备: 服务器名称内网IP公网IPPrometheus服务器192.168.0.23047.119.21.167Grafana服务器192.168.0.23147.119.22.8被监控服务器192.168.0.23247.119.22.82 更改主机名方便辨认 hostnamectl set-hostname prometheus hostnamectl set-hostname grafana hostn…...
kafka consumer客户端消费逻辑解析
kafka consumer客户端消费逻辑解析 一、主要步骤二、提交策略【步骤2代码解析】【提交策略总结】 三、拉取策略四、消费策略【代码解析】【消费策略总结】 一、主要步骤 这是kafka客户端拉取消息的入口,有4个主要部分 1、启动后的准备 consumer线程启动后ÿ…...
打印机出现多个副本无法删除
打印机出现多个副本很烦人,尤其是在打印机在局域网内被多个主机共享的时候,一旦出现新的副本,原有副本全都变成脱机状态,其他电脑连接的共享打印机是原来的副本,所以要重新设置打印机共享,很烦人。 想要删…...
FlinkSQL 开发经验分享
作者:汤包 最近做了几个实时数据开发需求,也不可避免地在使用 Flink 的过程中遇到了一些问题,比如数据倾斜导致的反压、interval join、开窗导致的水位线失效等问题,通过思考并解决这些问题,加深了我对 Flink 原理与机…...
JVM原理(十二):JVM虚拟机类加载过程
一个类型从被加载到虚拟机内存中开始,到卸载为止,它的整个生命周期将会经过 加载、验证、准备、解析、初始化、使用、卸载七个阶段。其中 验证、准备、解析三个部分统称为 连接 1. 加载 加载是整个类加载的一个过程。在加载阶段,Java虚拟机…...
Apipost接口测试工具的原理及应用详解(三)
本系列文章简介: 随着软件行业的快速发展,API(应用程序编程接口)作为不同软件组件之间通信的桥梁,其重要性日益凸显。API的质量直接关系到软件系统的稳定性、性能和用户体验。因此,对API进行严格的测试成为软件开发过程中不可或缺的一环。在众多API测试工具中,Apipost凭…...
unity里鼠标位置是否在物体上。
1. 使用Raycast 如果你的图片是在UI Canvas上,可以使用Raycast来检测鼠标点击是否在图片上。 using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; public class ImageClickChecker : MonoBehaviour { public Image targetImage; voi…...
Java知识点大纲
文章目录 第一阶段:JavaSE1、面向对象编程(基础)1)面向过程和面向对象区别2)类和对象的概述3)类的属性和方法4)创建对象内存分析5)构造方法(Construtor)及其重载6)对象类型的参数传递7)this关键字详解8)static关键字详解9)局部代码块、构造代码块和静态代码块10)pac…...
【Kafka】记录一次Kafka消费者重复消费问题
文章目录 现象业务背景排查过程Push与Pull 现象 用户反馈消费者出现消息积压,并且通过日志看,一直重复消费,且没有报错日志。 业务背景 用户的消费者是一个将文件做Embedding的任务,(由于AI技术的兴起,大…...
Android使用http加载自建服务器静态网页
最终效果如下图,成功加载了电脑端的静态网页内容,这是一个xml文件。 电脑端搭建http服务器 使用“Apache Http Server”,下载地址是:https://httpd.apache.org/download.cgi。 安装启动步骤,参考:Apach…...
python解耦重构,提高程序维护性
一、重构思想 思路来源 java spring设计模式学习,强调低耦合的思想,通过解耦来提高程序的可维护性。 二、代码重构 解决方案 通过单独配置文件来控制变量的改变。 spring的话可以读取xml或者是springboot 读取application.properties 来获取变量值。…...
深入解析 Laravel 事件系统:架构、实现与应用
Laravel 的事件系统是框架中一个强大且灵活的功能,它允许开发者在应用程序中定义和使用自定义事件和监听器。这个系统基于观察者模式,使得代码解耦和可维护性大大提高。在本文中,我们将深入探讨 Laravel 事件系统的工作原理、如何实现自定义事…...
视频怎么制作gif动态图片?GIF制作方法分享
视频怎么制作gif动态图片?视频制作GIF动态图片,不仅保留了视频的生动瞬间,还赋予了图像循环播放的魔力。这一技能不仅让创意表达更加丰富多彩,还极大地提升了视觉传播的效率和趣味性。在快节奏的数字时代,GIF动图以其小…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...
【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
Vue3 PC端 UI组件库我更推荐Naive UI
一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用,前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率,还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库(Naive UI、Element …...
数据分析六部曲?
引言 上一章我们说到了数据分析六部曲,何谓六部曲呢? 其实啊,数据分析没那么难,只要掌握了下面这六个步骤,也就是数据分析六部曲,就算你是个啥都不懂的小白,也能慢慢上手做数据分析啦。 第一…...
高效的后台管理系统——可进行二次开发
随着互联网技术的迅猛发展,企业的数字化管理变得愈加重要。后台管理系统作为数据存储与业务管理的核心,成为了现代企业不可或缺的一部分。今天我们要介绍的是一款名为 若依后台管理框架 的系统,它不仅支持跨平台应用,还能提供丰富…...
Ray框架:分布式AI训练与调参实践
Ray框架:分布式AI训练与调参实践 系统化学习人工智能网站(收藏):https://www.captainbed.cn/flu 文章目录 Ray框架:分布式AI训练与调参实践摘要引言框架架构解析1. 核心组件设计2. 关键技术实现2.1 动态资源调度2.2 …...
