写这个系列的目的

最近在学习unity2d游戏制作,这个系列的文章就是想将我学到的知识记录下来,方便自己以后复习回顾。

Unity2d基础知识

众所周知,Unity是一个游戏引擎,就我的理解来说,游戏引擎就是封装了计算机底层的接口(如图形化接口),然后封装了一些游戏的常用功能(如获取用户的输入),然后提供了一个方面编辑游戏的图形化界面以及工具的软件集合。

对于开发人员来说,使用游戏引擎就可以避免重复造轮子,可以专注于游戏内容的开发。这就和我们使用python的matplotlib库一样,有了这个库,我们就可以专注于数据本身,而不是去考虑从头开始在窗口中画坐标轴。

下面来介绍Unity开发的基础知识。

Unity的所有对象都被封装成Object类,我的理解是这是所有类的基类(如有不对,欢迎指出)。所有的类都可以在界面中的“层级”窗口查看。

如上图所示,图中黄色框中的就是“层级”窗口,我们所有的对象都可以在这个窗口中检索;图中绿色框是“场景”“游戏”“动画器”窗口。这个界面主要是用来编辑游戏界面以及动画的;图中紫色框是“项目”“控制台”,这是用来管理文件以及查看代码输出的;图中棕色框是“检查器”“平铺调色板”“检查器”用来编辑对象属性,“平铺调色板”用来编辑地图。

以上界面只是我自己的配置,你可以尝试构建自己的界面。

导入游戏角色

那么下面,我就来介绍一下如何导入游戏角色。

首先你需要准备一张游戏角色,我是用ps画了一张角色图片,如下图所示。

只需要将这张图片拖入到“项目” 窗口就行了,当然,最好使用背景透明的图片,这样在渲染图片的时候看起来就比较自然。

接下来我们需要为角色制作骨骼动画,就是她走路的时候的样子,具体的制作方法我是从下面的视频中学的。

万物皆可骨骼,unity的2d骨骼教程_哔哩哔哩_bilibili

我一共编辑了两套动作,一套是走路的时候的动作,一套是休息的时候的动作,然后我们需要编辑动画器,动画器实际上就是一个状态机,具体的界面如下所示

你只需要按照我的方式连接各个节点就行了。

编辑地图

那么我们有了角色,并且已经编辑好动画了,下一步就是编辑地图了。我们首先需要创建地图对象

然后需要准备放入“平铺调色板” 的素材,素材也是我自己用ps画的。

这张图片的尺寸是256x256,也就是说如果切成64x64的大小,那么可以分成4x4的小块,每一个小块都可以填充地图上的一个小块。

图中绿色部分需要调整成64, 我们导入素材之后点击上图中的蓝色区域的按钮进行切片。

在这之后新建一个调色板,然后将素材拖入即可。

下面就可以在地图上随心所欲地画图啦。

编写代码

终于到了最核心的部分了,我们编写代码要实现人物的移动和动画状态的改变,一共有两种状态,我们需要设置一个变量来控制动画状态

上图中左边的部分就是编辑参数的窗口,我们设定初始值为0。在这之后,你还需要为每个动画设定装换条件

做完这些准备后,我们就开始编写代码了。你需要在角色对象汇总添加脚本组件,完整的代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class PlayerController : MonoBehaviour
{// 人物移动的速度public float speed = 5;// 获取移动指令变量public float moveX;public float moveY;// 获取角色的动画器Animator animator;// 获取角色的刚体组件Rigidbody2D rd2d;// 动画器变量名string PlayerState = "PlayerState";// 角色状态表enum CharState{idle = 0,walk = 1}// Start is called before the first frame updatevoid Start(){// 获取动画器animator = GetComponent<Animator>();// 获取刚体组件rd2d = GetComponent<Rigidbody2D>();}// Update is called once per framevoid Update(){}void FixedUpdate(){// 获取x轴和y轴的移动指令// 获取水平方向指令moveX = Input.GetAxisRaw("Horizontal");// 获取垂直方向指令moveY = Input.GetAxisRaw("Vertical");// 获取人物的位置信息Vector2 p = transform.position;p.x = p.x + moveX * speed * Time.deltaTime;p.y = p.y + moveY * speed * Time.deltaTime;// 将新坐标赋值给物体位置管理属性transform.position = p;// 如果有移动就改变动画if (moveX != 0 || moveY != 0){// 给动画器变量赋值animator.SetInteger(PlayerState, (int)CharState.walk);Debug.Log(animator.GetInteger(PlayerState));} else{animator.SetInteger(PlayerState, (int)CharState.idle);Debug.Log(animator.GetInteger(PlayerState));}}}

接下来你就可点击开始按钮,试试看你的角色是否动起来啦。

Unity2d学习笔记(一)添加角色地图并且实现人物移动相关推荐

  1. unity2D学习笔记-角色动画

    unity2D学习笔记-角色动画 角色移动 动画效果(重点!!!!!) 创建:Animator与Animation 状态转换 跳跃 从fall到idle Hierarchy中创建一个Sprite作为载 ...

  2. 数据可视化清新版【chart.js】学习笔记8.0—极地图(Polar Area)

    Polar Area--(极地图) 极地面积图类似于饼图,但每个线段具有相同的角度 - 线段的半径因值而异.当我们想要显示类似于饼图的比较数据,同时也要显示上下文的值的范围时通常使用这种类型的图表. ...

  3. Android学习笔记之使用百度地图实现地图控制

    PS:吾之荣耀,离别已久. 学习内容: 1.实现地图控制. 2.百度地图开发的一些细节     1.实现地图控制:   这一篇主要写在百度地图上添加一些其他控制.上一篇书写了覆盖物的添加,地理编码和反 ...

  4. OpenWRT 学习笔记 -- 用户自定义添加app的开机自启动

    参考自:OpenWRT编译 – 用户自定义添加app的开机自启动 OpenWRT 学习笔记-19 OpenWRT开机自启动服务 文章目录 一.概述 二.自启动实现方式一 三.自启动实现方式二 四.自启 ...

  5. Apm飞控学习笔记之添加我的设备或单片机串口通信-Cxm

    目录 PX4/APM/飞控的学习笔记前言-Cxm_chen_taifu的博客-CSDN博客开始了 开始了终于有时间可以学习飞控了此文章是用来当目录,我会持续更新我的学习之旅,希望能对各位有所帮助如果有 ...

  6. Apm飞控学习笔记之添加我的飞行模式-Cxm

    目录 PX4/APM/飞控的学习笔记前言-Cxm_chen_taifu的博客-CSDN博客开始了 开始了终于有时间可以学习飞控了此文章是用来当目录,我会持续更新我的学习之旅,希望能对各位有所帮助如果有 ...

  7. Unity2D学习笔记Day9:添加敌人——受伤效果及反弹效果(补8.16)

    学习资源:B站 M_Studio<Unity教程2D入门>14 Unity Assets:Sunnyland Day9 受伤并反弹 预期效果:若在地面上碰到敌人,会触发受伤动画并反弹. p ...

  8. Unity2D学习笔记Day13:添加音效Audio

    学习资源:B站 M_Studio<Unity教程2D入门>18 Unity Assets:Sunnyland Day13 Audio Listener:耳朵,用来听声音的--一般放在mai ...

  9. Unity2d 学习笔记(四)碰撞检测

    碰撞检测功能在游戏开发里是比较常用的,比如地图上无法穿越的部分,以及对于敌人的攻击判定等等.这篇博客就开简单介绍一下碰撞事件的处理. 参考视频:Unity碰撞检测_哔哩哔哩_bilibili 首先,我 ...

最新文章

  1. 09 Java程序员面试宝典视频课程之多线程
  2. Python实现信息自动配对爬虫排版程序(附下载)
  3. c#泛型的使用[转]
  4. wp7 生命周期及多任务 详解
  5. 待删除未删除 问题解决
  6. c 服务器文件是存在,客户端服务器在较大的文件的c文件传输问题
  7. mysql ignore 1 lines_MYSQL使用笔记(1)
  8. Pycharm新建文件时自动添加基础信息
  9. Python中的特殊属性与方法
  10. DynamipsGUI笔记
  11. 汽车硬件测试基准介绍
  12. 广州坐标系转换大地2000_实用帖 | 从地方坐标系到2000国家大地坐标系的转换方法...
  13. 谈谈自己学习Linux的心得
  14. 疫情肆虐下,程序员们都在哪里?
  15. 查看服务器显卡GPU型号
  16. 费马小定理 欧拉定理 逆元
  17. matlab simulink 例子,simulink实例超实用
  18. Android 仿百合网超火爆社交app首页滑动效果
  19. 支持向量机识别数字集(数据采集+模型训练+预测输出)
  20. 物联网就业前景分析:只要有人的地方就有物联网

热门文章

  1. 微信8.0.3版本重磅更新,超多实用新功能(附内测版)
  2. HDOJ 1814 Peaceful Commission
  3. 在c语言如何对拨码开关编程,拨码开关控制实验
  4. 从权力的游戏谈用户画像
  5. 结构建模设计——Solidworks软件之草图几何关系绘制与草图编辑功能总结(裁剪实体、转换实体引用、等距实体)
  6. 嵌入式开发工具集合及资料(转载)
  7. 记一次linux挖矿木马的处置
  8. 如何关闭AndroidX?
  9. linux极点五笔无法输入词组_ibus设置
  10. x58添加uefi_修改为UEFI引导的方法,不需要重装