unity2D横版游戏教程-1 让人物动起来

Posted 真的没事鸭

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity2D横版游戏教程-1 让人物动起来相关的知识,希望对你有一定的参考价值。

在看完了麦扣老师的小狐狸的视频后,为了巩固练习,我另外找一个素材包来练手,顺便写成一个教程让自己更加熟练,同时当自己遗忘时可以回头查阅。另外,这个教程我写的非常详细,萌新也可以学习。有什么不对的地方或者有疑问的地方,欢迎指正和咨询。

首先导入素材

然后我们可以先浏览一下素材包,一个是Assets,一个是测试场景demo,我们主要看Asset里面有什么,background里面是我们的背景图片,Items是各种各样的物品,Main Character存放的就是我们的角色,这里有四个人物,我们用第一个人物就行,Other是一些调色用的东西,Terrain就是我们的地形相关的素材,Traps里面有很多的陷阱,用来增加游戏性。素材包就介绍到这里,其实我们这一节的主要目的还是让角色动起来,所以用到的东西不是很多,一个是角色,还是就是地形素材。

我们先把角色的所有图片的Pixels Per Unit(每单位像素)都改成32,因为素材是32像素*32像素的

 接着创建一个空组件(Hierarchy栏右键->Create Empty)命名为player,右边的transform记得reset(重置)一下

 在player里面添加一个组件叫sprite Renderer(精灵渲染器),这个就是用来添加我们角色的模型

 把角色的的idle的第一帧的姿势拖到刚才的sprite Render里面的Sprite

 这样我们就创建我们的角色,并且可以再Scene栏中看到我们的角色了

 然后我们把地图简单的设置一下

在左边的hierachy视图那里创建一个tilemap,tilemap是unity的一个插件,可以很方便的让我们进行2D游戏地编工作

 命名为platforms

 接着我们从Window->2D->Tile Palette打开我们的tilemap的编辑界面

 Creat New Palette创建一个新的面板,命名为Map,位置可以自己随便放,但是为了后期更好的管理我创建了一个文件夹专门的放这类的东西,在project栏右键creat就可以创建新的Folder,我们这里可以创建一个Map文件夹存放我们的tilemap

在素材包的Terrain里面有两个png图片,这两个就是我们地编的基础素材了,第一个好像没有切分,所以我们用第二个,记得把在右边Inspector那里把像素改成16

 然后直接把这个图片拖到Tile Palette,位置选择我们创建的Map文件夹

 回到Hierarchy,点击platforms,这时候就可以编辑我们的地形了,回到Tile Palette,我们先添加一个简单的平台,直接选中Tile Palette里面的方块就直接直接拖到Scene里面

 这样我们的第一个平台就做好了

我们还需要给platforms添加一个碰撞器

我们点击platforms,在右边点击Add Component(添加组件)添加一个Collider组件,搜索tilemap collider 2D,选择就可以了。

 这样我们就给我们的地形添加了一个碰撞体,这个collider可以用来检测物品之间是否发生碰撞,也可以作为触发器使用。我们这里可以简单的认为加了collider之后地形就有了实体,人物不会直接穿过去,并且还可以响应对应的碰撞事件,比如人物碰到地形以后会触发一个事件,这个事件可以用来写人物跳跃的动画。

既然地形可以加collider,那么我们的人物也可以加collider,我们给人物也添加一个collider,我们给人物添加的是一个圆形的碰撞器,还有一个盒体碰撞器叫Box Collider 2D,我们不用这个,考虑到素材没有蹲下的动作而且盒体碰撞体容易和地形发生卡顿。

 然后我们点击Edit Collider对这个圆形碰撞器进行一个编辑,将它的大小调整到一个合适的位置

 

 我们点击运行之后就可以发现人物已经站立在了平台上

然后我们就需要将我们的人物动起来,角色要动起来肯定要有一个力,并且还要响应我们的按键的触发,这个力就是我们的Rigidbody 2D,这个组件可以给我们的角色添加x方向和y方向的力,这样就能够让角色动起来了,所以我们给角色添加这个组件

 但是记得在constraints(约束)那里锁定z轴,不要让z轴动起来,因为z轴动起来的话角色就会翻滚起来

然后我们给player添加一个空组件,点击player右键create empty,然后命名为groundCheck,这个东东是为了我们之后检测人物是否在地面时用的,在这个空的组件右边属性面板选择一个合适的颜色便于我们修改它的transform

 把它放到角色的脚那里就行

 还有就是按键的触发,Edit->Project Settings->Input Manager,这样我们就进入了按键设置

 拉开Axed我们就可以添加或者改变我们想要的键位,比如这个Horizontal,这个是x轴方向的键位,a和d或者left和right,Vertical就是y轴方向的键位

这里已经帮我们绑定好了,我们不需要做任何变动

为了让角色动起来我们还要给角色添加动画

创建一个文件夹叫Animation来存放动画资源

在这个文件夹里面右键->create->Animation创建一个动画命名Idle

 记得在属性栏勾选Loop,让我们的Idle动画循环播放

 然后将这个Idle拖给我们的player,我们就会发现文件夹里多了一个叫player的Animator Controller

 同时在player的Inspector栏多了一个Animator,我们发现Animator Controller已经自动为我们创建并添加上去了,这样是不是非常方便

 然后我们通过window->Animation,打开Animation和Animator

 选择player,在Animation栏只有一个Idle动画,我们给这个Idle添加动画序列,我们上面说过,角色的动画都在Main Character文件夹的Mask Dude里面,选择Idle里面的所有图片拖到Animation栏里面

 将Samples改成15,就可以播放动画试试了,Samples越大播放速度越快

同理,我们创建一个run的动画,选择player,在Animation栏,点idle下面可以创建新的动画

 把这个新的动画命名为run,然后把run的动画序列拖进去,samples改为20就行

 我们之前不仅打开了Animation栏,还打开了Animator栏,Animator栏是干什么用的呢,Animator是用来进行动画的切换,打开我们Animator可以发现多了两个状态,一个idle一个是run,我们右键idle,make transition连到run,同样run也一样,这样我们就可以添加一些条件让这两个动画进行切换了

 

 在Parameters(参数)那里点击加号可以添加一个变量来作为动画间的切换的开关

我们添加一个bool变量表示run状态

 所以我们idle和run之间的连线就可以设置他们切换时的条件,比如我们点击idle朝向run的箭头,我们就可以设置什么时候从idle切换到run,记得把右边属性栏的Has Exit Time取消勾选,以及把settings里面的Transition Duration设置为0,以后所有动画之间的连线都要这样设置

 然后在下面Conditions就可以添加条件了,我们判断run为真时从idle状态切换到run状态

 从run状态到idle状态的设置与上面类似

 依次类推,我们再创建两个动画,并且设置他们之间切换的条件

分别是jump(起跳)的动画和fall(下落)的动画,这里不在一一讲解了,这里把相关的操作贴出来,但是记得去Animation文件夹里面把jump和fall两个动画的loop time取消勾选,这两个动画播放一次就够了

 

 

 Run->jump和idle->jump的条件都是一样的,都是jump为true

 Jump->fall的条件是jump为false,fall为true

 Fall到idle的条件是fall为false

 这样我们除了代码之外的准备工作就做完了。

然后下面我们就开始进行代码编写的工作啦。

链接:unity2D游戏之让人物动起来-下_真的没事鸭的博客-CSDN博客

如何实现横版游戏中角色的移动控制

嗨!大家好,我是小蚂蚁。欢迎关注我的微信公众号【小蚂蚁教你做游戏】,学习更多游戏开发原创教程。

今天分享一下横版游戏中角色的移动控制,在一个 2D 的横版游戏中,对于游戏角色的移动控制,其实只需要考虑水平方向上即可。如果角色可以跳跃的话,才需要去考虑垂直方向上的移动,这篇文章只涉及到水平方向上的角色移动控制。

如何实现横版游戏中角色的移动控制_游戏开发

如图,是一个人物角色,我们需要考虑的有两点。

第一点是控制这个角色在水平方向上移动,按向右移动的按钮时,他的位置应该向右移动,按向左移动的按钮时,他的位置应该向左移动。

第二点是控制角色的朝向,向右移动时,角色应该面向右,向左移动时,角色应该面向左。

接下来,我们来到微信小游戏制作工具中,看一下如何实现这样的移动控制功能。

我们先来实现一下利用“摇杆”控制角色的移动。“摇杆”插件位于素材库中,点击“资源管理器”中的“添加素材”按钮,打开素材库。

如何实现横版游戏中角色的移动控制_游戏开发_02

在素材库的上选择“插件”,找到“摇杆”,添加到项目中。

接着,再添加一个用于控制的角色,可以在素材库中找到“丛林冒险”中的“奔跑人物”(这个素材是有跑步动画帧的),添加到项目中。

如何实现横版游戏中角色的移动控制_游戏开发_03

添加完成之后,我们的项目就变成了这样。

如何实现横版游戏中角色的移动控制_游戏开发_04

接下来我们将使用下方的这个摇杆来控制游戏角色的移动。

要实现精灵的移动控制,其实工具已经为我们提供了现成的“行为”了,选中“奔跑人物”,然后在属性区中点击“管理行为”,在打开的行为面板中,开启“方向控制”行为。

如何实现横版游戏中角色的移动控制_游戏开发_05

行为开启后,回到属性区的下方就可以看到关于“方向控制”行为的一些属性了。这里因为我们只需要控制水平方向上的移动,所以方向选择这里使用“左右”即可。

如何实现横版游戏中角色的移动控制_游戏开发_06

除此之外,在积木区中的“行为”类别中,也增加了与“方向控制”有关的积木块。

如何实现横版游戏中角色的移动控制_游戏开发_07

其实,在增加了“摇杆”插件,开启了“方向控制”行为之后,我们就已经完成第一步了,点击预览场景,看一下。

如何实现横版游戏中角色的移动控制_游戏开发_08

可以看到,这时我们已经可以使用摇杆来控制角色的移动了。

接下来,我们继续完成第二步,就是调整角色的朝向,让角色向右移动时,面向右,向左移动时,面向左。

想要实现这个功能,需要先了解 2 块积木块,第一块就是“方向控制”中的“移动方向”积木块。

如何实现横版游戏中角色的移动控制_游戏开发_09

调用这个积木块,我们可以获得一个角度值,通过判断当前的角度值,可以知道当前角色是在向哪里移动。

如何实现横版游戏中角色的移动控制_游戏开发_10

如图,如果当前正在向右移动的话,调用“移动方向”积木块会获得一个 0 的值,向左移动的话,会获得一个 180 的值。

接下来,我们了解一下第二块积木块。位于“外观”中的“将自己的造型水平翻转”。

如何实现横版游戏中角色的移动控制_游戏开发_11

这个积木块帮助我们解决的就是精灵图片的朝向。

如何实现横版游戏中角色的移动控制_游戏开发_12

如图,左侧的图片经过“水平”翻转后,就会变成右侧的样子。

在了解完这两块必须的积木块之后,我们直接来看一下实现逻辑,在角色上增加如下的积木块。

如何实现横版游戏中角色的移动控制_游戏开发_13

这里我们根据“是否向右”的变量的值,以及“移动方向”的数值,来判断何时进行水平翻转。如果当前角色面向右,那么只有在角色向左移动的时候,才应该进行一次翻转,让角色面向左,反之亦然。

再次预览一下,看看移动效果。

如何实现横版游戏中角色的移动控制_游戏开发_14

根据摇杆的控制,角色会向正确的方向移动,并且会面向正确的方向,这样控制角色移动的功能就完成了,

可能有人会说,这是一个 2D 横版游戏,根本没有必要使用一个包含 4 个方向的摇杆,只需要使用“一左一右”的两个按钮控制方向就可以了。使用两个按钮来控制方向其实也非常的简单。

我们在场景中增加两个按钮,表示左右键。

如何实现横版游戏中角色的移动控制_游戏开发_15

然后,新建 2 个通知,一个通知“向左移动”,一个通知“向右移动”。

如何实现横版游戏中角色的移动控制_游戏开发_16

这两个按钮的上的逻辑非常的简单,当我按住按钮时,它们给游戏中的角色发送对应的通知。

如何实现横版游戏中角色的移动控制_游戏开发_17

如何实现横版游戏中角色的移动控制_游戏开发_18

最后,来到角色上,接收这两个通知,然后只需要根据通知调用“行为”中的“向左/右移动”积木即可。

如何实现横版游戏中角色的移动控制_游戏开发_19

最后,我们来预览一下。

如何实现横版游戏中角色的移动控制_游戏开发_20

这样我们就实现两种移动控制方式,一种使用“摇杆”控制,一种使用“左右按钮”控制,其实“摇杆”插件只不过是自动给我们处理了向左向右的移动而已。

好了,今天的内容就到这里了,对于横版游戏中角色的移动控制技能,你掌握了吗? 


​嗨!大家好,我是小蚂蚁。欢迎关注我的微信公众号【小蚂蚁教你做游戏】,学习更多游戏开发原创教程。

如何实现横版游戏中角色的移动控制_游戏开发_21


以上是关于unity2D横版游戏教程-1 让人物动起来的主要内容,如果未能解决你的问题,请参考以下文章

unity2D横版游戏教程5-UI

Unity2D横版游戏地形生成

unity2d游戏入门开发【三】各个面板作用

如何实现横版游戏中角色的移动控制

Unity2D像素游戏开发——Aseprite简单人物绘画+动画制作导出精灵表示例

unity2d游戏开发系列教程:四一个2D游戏所需要的主要功能(游戏框架)