当前位置: 首页 > news >正文

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值升序进行输出。 想法&#xff1a…...

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线程启动后&#xff…...

打印机出现多个副本无法删除

打印机出现多个副本很烦人,尤其是在打印机在局域网内被多个主机共享的时候,一旦出现新的副本,原有副本全都变成脱机状态,其他电脑连接的共享打印机是原来的副本,所以要重新设置打印机共享,很烦人。 想要删…...

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】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型

本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...

6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础

第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...

Python网页自动化Selenium中文文档

1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API,让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API,你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...