本文参考:
如何制作游戏?【不需要编程 __】新手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中重名的文件进行重构。
2、 启动第一个demo
(1)在Kit Tools下选择Create New Scene
![](/qrcode.jpg)
(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的道路上吾将上下而求索~~