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动图以其小…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...

网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...