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

2023-11-18

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

首先导入素材

然后我们可以先浏览一下素材包,一个是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博客

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

unity2D横版游戏教程-1 让人物动起来 的相关文章

  • 「Bomkus 博士的试炼」排行榜规则更新

    亲爱的玩家们 为了回应我们从社区收到的宝贵反馈 我们希望与大家分享我们为防止在 Bomkus 博士的试炼 排行榜中作弊而采取的措施的最新进展 并就这一主题提供更多说明 除了在活动开始前采取的反作弊措施外 我们还根据观察到的和报告的行为在整个
  • 《开箱元宇宙》:Madballs 解锁炫酷新境界,人物化身系列大卖

    你是否曾想过 元宇宙是如何融入世界上最具代表性的品牌和名人的战略中的 在本期的 开箱元宇宙 系列中 我们与 Madballs 的战略顾问 Derek Roberto 一起聊聊 Madballs 如何在 90 分钟内售罄 2 000 个人物化
  • 基于Python手把手教你实现flappy bird游戏

    目录 前言 开始前的准备工作 进入正题 结束语 前言 想必玩过游戏的都知道 Flappy Bird是一款简单却富有挑战性的经典的小鸟飞行游戏 让许多玩家为之痴迷 而作为开发者 那肯定要通过技术手段来再做一遍这款经典游戏 那么本文就来通过万能
  • 探索元宇宙链游戏:一场数字世界的奇妙融合

    随着互联网的飞速发展 以及人们不断对互动娱乐体验的要求提高 元宇宙渐渐成为人们追求的目标 而区块链技术的出现给元宇宙链游开发带来了新的机遇和挑战 一 元宇宙链游定义 元宇宙链游全称为基于区块链技术的元宇宙游戏 是一种新型的网络互动娱乐形式
  • mixamo根动画导入UE5问题:滑铲

    最近想做一个跑酷游戏 从mixamo下载滑铲动作后 出了很多动画的问题 花了两周时间 终于是把所有的问题基本上都解决了 常见问题 1 动画序列 人物不移动 2 动画序列 人物移动朝向错误 3 蒙太奇 人物移动后会被拉回 4 蒙太奇 动画移动
  • 游戏弹窗找不到emp.dll怎么办?分享5个靠谱的解决方法

    在现代的游戏世界中 我们经常会遇到各种各样的问题 其中 最常见的问题之一就是 无法找到emp dll 或 emp dll丢失 那么 emp dll到底是什么 它有什么作用 为什么会出现丢失的情况呢 不用担心 本文将从这几个方面进行详细解析
  • zkSend — — 在Sui上发红包像发电子邮件一样简单

    12月14日 知名区块链媒体平台The Block发表了这篇关于对Mysten Labs联合创始人Adeniyi Abiodun的采访 文中 我们 指代该媒体 数据均为截止撰写文章时数据 以下是正文 两年前 当五名前Facebook工程师创
  • 【转载】【Unity】WebSocket通信

    1 前言 Unity客户端常用的与服务器通信的方式有socket http webSocket 本文主要实现一个简单的WebSocket通信案例 包含客户端 服务器 实现了两端的通信以及客户端向服务器发送关闭连接请求的功能 实现上没有使用U
  • 坦克大战(二)

    欢迎来到程序小院 坦克大战 二 玩法 键盘 A W S D 键来控制方向 空格键发射子弹 N 下一关 P 上一关 Enter 开始 赶紧去闯关吧 开始游戏 https www ormcc com play gameStart 221 htm
  • Metasequoia4 for Mac/win:带您进入三维模型游戏建模的新世界!

    在当今游戏行业中 三维模型的重要性无可置疑 而在这个充满创造力和无限可能的领域中 Metasequoia4 简称M4 无疑是您的最佳选择 作为一款专业的三维模型游戏建模软件 M4凭借其强大的功能和简便易用的界面 成为了无数游戏开发者和设计师
  • 揭开神秘面纱,探索犹格索托斯的庭院:一款令人陶醉的模拟经营+AVG游戏

    你是否曾梦想过踏入一个充满神秘与奇幻的世界 体验一番独特的冒险 现在 这个梦想将成为现实 我们荣幸地向你介绍一款全新的模拟经营 AVG游戏 犹格索托斯的庭院 犹格索托斯的庭院是一款极具创意的游戏 它将带你进入一个神秘而充满魅力的世界 在这里
  • 如何有效获取APP新增用户

    在提升APP用户获取效果方面 有几个关键策略可以考虑 市场定位与目标用户明确 在推广过程中 确保清晰地了解你的目标用户是谁 以便有针对性地开展推广活动 对用户的需求和偏好有深入了解 可以更好地制定吸引用户的策略 引人入胜的营销策略 设计有吸
  • 揭开神秘面纱,探索犹格索托斯的庭院:一款令人陶醉的模拟经营+AVG游戏

    你是否曾梦想过踏入一个充满神秘与奇幻的世界 体验一番独特的冒险 现在 这个梦想将成为现实 我们荣幸地向你介绍一款全新的模拟经营 AVG游戏 犹格索托斯的庭院 犹格索托斯的庭院是一款极具创意的游戏 它将带你进入一个神秘而充满魅力的世界 在这里
  • 计算机提示vcruntime140.dll丢失的解决方法,多种修复教程分享

    vcruntime140 dll是一个非常重要的动态链接库文件 它包含了许多运行时的函数和类 然而 有时候我们可能会遇到vcruntime140 dll无法继续执行代码的问题 这会给我们带来很大的困扰 那么 这个问题是什么原因导致的呢 又应
  • Unity学习笔记

    一 旋转欧拉角 四元数 Vector3 rotate new Vector3 0 30 0 Quaternion quaternion Quaternion identity quaternion Quaternion Euler rota
  • 如何有效获取APP新增用户

    在提升APP用户获取效果方面 有几个关键策略可以考虑 市场定位与目标用户明确 在推广过程中 确保清晰地了解你的目标用户是谁 以便有针对性地开展推广活动 对用户的需求和偏好有深入了解 可以更好地制定吸引用户的策略 引人入胜的营销策略 设计有吸
  • 盘点第三方支付行业中一些“专用术语”

    每个行业都有自己的行业术语 在官方场合被称为 术语 如果你是支付行业的新手 或者正在努力深入了解这个复杂但充满机遇的领域 那么掌握行业术语就是打开这扇门的关键 支付系统的需求文档和技术方案文档都充斥着专业词汇和行业术语 有些词汇容易理解 有
  • 广告竞价策略:激发广告变现潜能的关键

    在数字化时代 广告已经成为企业推广品牌 产品和服务的关键手段之一 为了最大程度地发挥广告的效果 广告竞价策略成为广告主和数字营销专业人士关注的焦点 通过巧妙运用竞价策略 广告主可以在激烈的市场竞争中脱颖而出 实现广告变现的潜能 admaoy
  • 游戏开发之常见操作梳理——武器装备商店系统(NGUI版)

    游戏开发中经常出现武器商店 接下来为你们带来武器装备商店系统的具体解决办法 后续出UGUI Json版本 敬请期待 武器道具的具体逻辑 using System Collections using System Collections Ge
  • 游戏开发常见操作系列之敌人系统的开发一(U3D)

    在开发游戏的过程中 我们常常会出现一些敌人攻击我们玩家 并且实现掉血以及死亡的现象 敌人还会源源不断地生成 这是怎么制作的呢 接下来为大家提供方法 其中使用了NGUI 后续会更新其它方法 敬请期待 使用HUDText实现扣血时显示文本 直接

随机推荐

  • 年底裸辞准备面试,我用7张图画了ZK分布式锁!

    一 写在前面 之前写过一篇文章 都2022年了 出去面试连分布式锁的源码你都不会画 给大家说了一下Redisson这个开源框架是如何实现Redis分布式锁原理的 这篇文章再给大家聊一下ZooKeeper实现分布式锁的原理 同理 我是直接基于
  • Python opencv学习-12 2D直方图绘制

    绘制2D直方图 要转换到hsv色彩空间 import cv2 import numpy as np from matplotlib import pyplot as plt img cv2 imread image pic2 png hsv
  • C++多线程:创建线程

    C 中线程的创建一般是通过std thread类实现的 具体的实现方式有以下几种 1 使用函数名创建 void pcreat int a cout lt lt start lt lt a lt lt endl int main thread
  • advisor2002仿真参数界面grade options不弹出设定窗口

    针对这种问题 解决办法如下 第一步 找到advisor2002安装路径 然后找到 advisor2002 gui gradefig m文件和gradefig mat文件 把gradefig m文件名改为GradeFig m再把gradefi
  • AD账号导入--dsadd user

    Microsoft Windows AD账号全命令方式操作 导入一 AD 叫active directory 中文活动目录 其实是一个数据库 下面将介绍以数据库方式操作AD 对象二 AD对象操作有如下 1 新建一个对象 用 dsadd
  • windows如何查看最近打开的文件及文件夹?

    按住win R快捷键 输入recent 即可看到最近打开的文件
  • C语言的每日一题(一)

    前言 今天开始 我将开启我的每日一题之路 作者 一颗带有痣的毛 期待你的关注 一 三位数反转 题目 输入一个三位数 分离出它的百位 十位和个位 反转后输入 样例输入 127 样例输出 721 首先我们来分析一下这一题的思路 这一题的主要思路
  • 九鼎Study210嵌入式开发板刷机笔记

    本刷机笔记是基于S5PV210的九鼎Study210嵌入式开发板 准备 电脑通过串口线连接到开发板的UART2 靠近电源 与裸机不同 usb线连接到开发板OTG端口 开发板接入电源 串口助手打开 开机 只要连接成功 无论开发板是否启动了ub
  • Android系统控件使用的踩坑日志

    1 ListView在乐视 三星手机上出现崩溃 修复listview在部分手机上崩溃 java lang IndexOutOfBoundsException Invalid index 0 size is 0 at java util Ar
  • 【ARM 常见汇编指令学习 3 -- ARM64 无符号位域提取指令 UBFX】

    文章目录 ARM64 无符号位域提取指令 上篇文章 ARM 常见汇编指令学习 2 存储指令 STP 与 LDP 下篇文章 ARM 常见汇编指令学习 4 ARM64 比较指令 cbnz 与 b ne 区别 ARM64 无符号位域提取指令 在代
  • 图片上传提交前,图片显示在页面上

    lt div class upload box gt lt b gt 上传图片 lt input type file name file id file accept image onchange imgChange this gt lt
  • MMSegmentation笔记07:使用MMDeploy部署

    1 安装MMDeploy 首先要安装MMDeploy库 直接在对应环境下执行命令 pip install mmdeploy 1 2 0 然后在对应项目下安装MMDeploy源码 在cmd中执行 git clone https github
  • 求建议:二本计算机专业,考研还是就业做开发?

    安老师好 我是一个大连某二本院校的在读生 专业是计算机 日语强化 上大学以来一直关注着您的公众号 读了很多您的文章 学到很多东西 也受到过您的鼓舞 随您一同成长进步 目前我已是大三下 站在第二个人生岔路口 正为各种浮在空中的想法烦恼不已 身
  • C++ 读取文件和写入文件

    C 读取文件 有两种方式可以实现读文件的功能 第一种 用fread实现 这种方法适合读取各种结构化的数据包 include
  • 良心推荐:12个免费学习网站,赶紧收藏

    01 Oeasy http oeasy org Oeasy 是一个完全免费的综合视频教程网站 非常良心实用 它提供的视频教程非常丰富并且质量很高 包括 PS 教程 手机摄影教程 Ai 做图教程 Excel 教程 Word 教程 PPT 教程
  • python 安装第三方库,超时报错--Read timed out.(安装numpy时会出现)

    近期在安装numpy时 总是会出现Read timed out这个错误 经查是由于python在安装三方库时设置的时间限制 一般我们使用的命令为 pip install XXXX XXXX为你即将要安装的三方库 此时可能会出现以下错误 Re
  • 解决OpenCV重装后Python下import cv2错误问题(Ubuntu系统)

    本文是博主解决问题过程中所产生的一些想法 分享出来 希望能帮到一些朋友 不足之处 还望各位大佬不吝赐教 前提 博主在Ubuntu服务器上安装了OpenCV4 0版本 Python环境下可以运行 如图1 某天在部署YOLO3的时候 程序跳出e
  • git 错误error: failed to push some refs to

    今天使用VSCODE 学习node js 想在git上push代码 于是在git上建立了一个私有的长裤 连接后push代码时提示如下错误 error failed to push some refs to git github com Up
  • 树型权限管理插件:jQuery Tree Multiselect详细使用指南

    树型权限管理插件 jQuery Tree Multiselect详细使用指南 1 认识jQuery Tree Multiselect 这个插件允许用户以树型的形式来呈现列表复选框的选择 多用于权限管理中用于分配不同的权限 使用文档 请参考
  • unity2D横版游戏教程-1 让人物动起来

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