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博客
unity2D横版游戏教程-1 让人物动起来相关推荐
- unity2D横版游戏教程-2 代码实现
接下来就是写代码的时候 我们创建一个文件夹用来存我们的脚本,名字就叫Scripts,在里面右键->Create->C#Script,这样就创建好了一个脚本 直接将这个脚本拖给我们Hiera ...
- unity2D横版游戏教程终章-主菜单和暂停菜单
最后一节我们做一下主菜单和暂停菜单 我们创建一个新的scene,命名为Menu,这个就是主菜单场景 我们双击Menu进去设置一下我们的UI 我们先添加一下Canvas,在Canvas下面创建连个Pan ...
- unity2D横版游戏教程8-音效
简单介绍一下unity audio,auido包括三个东西,分别是Aduio Listener,Audio Source,Audio Clips.Audio Listener就相当于耳朵,是用来听声音 ...
- unity2D横版游戏教程10-场景控制
我们让角色掉出地图时重置游戏 我们在Hierarchy那里创建一个一个空项目,命名为DeathLine,也就是死亡线,我们给它添加一个盒体碰撞器,调整一下碰撞器 我们要把这个碰撞器当做触发器使用,所以 ...
- unity2D横版游戏教程9-对话框dialog
这节我们实现对话框dialog的效果,也就是人物到达某个地方后会弹出来一个对话框,比如资源包里有一个奖杯的模型,我们可以做人物碰到奖杯时提示游戏胜利的效果 我们先在地图中添加奖杯 我们在Collect ...
- unity2D横版游戏教程-3 Cinemachine镜头移动
Cinemachine是官方提供的摄像机工具组件,这个工具的用处还蛮大的,不过我们这里就简单说一下在2D游戏里面怎么实现镜头跟踪的效果,这里我们用Cinemachine代替使用Main Camera ...
- unity2D横版游戏教程5-UI
UI是User Interface的缩写,也就是用户界面.像登录界面的按钮,游戏的得分,暂停的按钮等都是UI 之前我门创建一个Cherries变量来计算我们收集樱桃的数量,现在我们创建一个UI来显示我 ...
- unity2D横版游戏教程7-敌人AI死亡效果
我们稍微完善一下敌人AI,我们给敌人添加一个死亡动画,命名为death 先创建一个Trigger变量来控制什么时候切换death,这个Trigger相当一个开关.死亡动画是任何状态都可以实现的,所以在 ...
- unity2D横版游戏教程4-物品收集以及物理材质
我们先把背景扩大一点,ctrl+D复制一个背景图然后调一下位置,在把地图稍微拓展一下 然后再Hierarchy界面创建一个空组件命名为Collection,表示物品,创建一个空的子组件叫Cherrie ...
最新文章
- 关于Oracle数据库用户密码过期的预防和解决办法
- torch 列最大值
- .NET Core 中如何在运行中加载 Controller ?
- Android动态权限申请
- 大学计算机用的笔记本,推荐一款大学生用笔记本电脑
- struts中多个模块时,使用多个struts-config.xml文件之间时如何切换的!
- 汽车辐射监测系统-Qt开发
- 手机端判断触摸滑动方向
- Google是如何赚钱的 -- 四年工作离别小结
- GNSS精密星历读取(matlab)
- LTE-OA系统架构图
- 浅谈权限设计(从接口权限到数据权限)
- 对MC9S12XS128MAL中TIM、PIT、RTI的一点理解
- Android SO 加壳
- 数据挖掘面试 150 道题(附答案)
- 待我君临天下,定许你一世繁华。
- 收藏了!3D建模软件大全,想入门3D建模的小伙伴一定不要错过
- 阿里云服务器操作系统有哪些?如何选择?
- 差异增量备份和累积增量备份区别(有图)
- 一种Android分包策略推荐
热门文章
- 字节跳动李航入选ACL Fellow,他曾这样看待机器学习
- 桌面图标注册表对应项
- 仿淘宝 RecycleView滑动效果 底部view联动
- time_to_sec函数的使用
- 2.4g 无线通讯至服务器,WiFi、2.4G、433M、GPRS无线通讯方式的区别
- python之os模块操作文件与文件夹
- java中ws程序是什么意思_Java Web服务对象(JAX-WS)生命周期
- C语言一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?
- javaScript 美化上传文件框(加预览移除效果)
- python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析