目录

  • 前言
  • 学习内容
    • 编辑素材
    • 绘制地图
    • 设置画面比例,调整图层顺序
    • 添加角色
    • 给游戏对象添加组件
    • 角色移动

前言

记录了我学习的第一个Unity项目,也是我第一篇博客,希望在这里记录下来我在游戏开发上成长的历程,加油!~

项目是b站M-studio 麦扣老师的初学项目《小狐狸》,链接:

安装导入素材后,下面是具体的学习内容。

学习内容

编辑素材

导入素材后,在project中进入environment,可以看到有背景图片。背景图片导入前,界面的网格是什么?界面的网格的一个单元对应着右侧inspector窗口的Piexls Per Unit 中的Unit。

关于这个Piexls Per Unit (俗称PPU)有什么用,可以看一下这两篇文章:

【转载】 Unity中的Pixel Per Unit 与图片像素

【转载】 unity 单位 像素 分辨率 正交摄像机size 之间的关系

我的一点点理解是: unity相机视角的单位是Unit而不是piexl,而一般的素材图片的单位是Unit,所以当我们不改变相机的视距(相机视角内的Unit数量不变),例如一个想在视角内占据两个Unit的图片素材。当我们PPU越大,即Unit内像素点越多,相机视角内该素材也同样需要更多的像素,需要更高清,有更多的细节。而当我们PPU越小,每个unit中像素点少,这个素材也就可以用低分辨率蒙混过关(大概)。

在这个教程中,素材都是像素风,所以点击素材准备导入之前,我们都要调整PPU为 16(数值和素材的大小有关)。点击Apply 应用。

将背景图片拖入到hierarchy窗口,即导入背景图片成功。在scene窗口是开发用的窗口。Game窗口是实际游戏时的场景(相机的视角)。

在scene窗口中,有可以对素材进行控制的工具。他们的快捷键是QWERTY,相当的直观了。

Hierarchy窗口是我们当前游戏场景中的所有游戏对象,选中某个对象,右侧inspector窗口可以显示该对象的所有属性和挂载的组件。

绘制地图

如何在背景图片中绘制出我们的地图?

答:使用船新的一个游戏对象–>TileMap

在hierarchy窗口中点击创建或者右键-> 2D Object ->TileMap。选中后,scene场景中出现了很明显的分格,就是之前说过的Unit。

为了方便观察,先暂时隐藏背景图片,在hierarchy中选中背景,在inspector中第一行的勾勾给取消掉,背景图片就暂时消失了!

点击顶部工具栏中的window->2D-> Tile Palette 来打开绘制窗口。

注意,一般的地图的小地形素材都是生成在一张图片里面的,所以如果我们直接将素材拖入Tile Palette窗口中就会被误以为是一个素材,而不是导入图片内部分开绘制的许多地形素材,就没有办法使用图片里面的每一个地形素材。在project窗口中选择地形素材图片tileset,在右侧inspector中(记得修改PPU为16),修改sprite mode 从single 到multiple ,意为这个图片里面有很多很多素材。再点击sprite editor 按键,编辑一下(一是将图片内的各个素材识别出来,二是因为素材中有一些地形是“组合”起来的,我们要正确的“切割”来确保我们获得的是想要的地形“单元”),点击打开的editor窗口中的slice ,type有Automatic 自动档,这个选项就会选择自动识别素材,但是没有得到我们想要的单元。所以type选择 grid by cell size ,按照单元格划分网格,单元格是多大嘞? piexl size 之前调整PPU是16 ,所以我们这个地形单元应该正好是一个Unit 所以是16,切割完成后,就可以发现,素材已经被分割成了我们想要的单元。 这个时候再导入就比较完美了 。

导入后,Tile Palette窗口的笔刷,再点击想绘制的素材,此时就能在scene中绘制地图了。

设置画面比例,调整图层顺序


在Game窗口可以设置自己喜欢的游戏的画面比例

在hierachy窗口选择相机,右侧inspector中可以设置size ,仔细数一下,其实size就是在相机视角中上下各自延申的unit数。

图层:

选中一个游戏对象,右侧的inspector中第二行layer有当前对象所属的图层,而在下面的sprite render中还有一个sorting layer 和order in layer ,这关系到unity的渲染顺序,可以参考一下这篇文章和下面的视频:

【转载】Unity的三级排序层级渲染Layer,sorting layer,order in layer

【转载】【Unity 2D游戏开发教程】第18课 如何正确理解Unity中的Layer和Sorting Layer_哔哩哔哩_bilibili

关于图层这么几个概念,个人给出一个不负责任的结论(笑):

Layer:在整个程序中对物体分层,主要用于创建摄像机遮挡效果,还有控制碰撞的关系。

sorting layer:分类层。数字越大,层级越靠前,显示优先级越高,越后渲染,越难被遮挡

Order in layer:分类层内部的顺序。数字越大,显示优先级越高,越后渲染,越难被遮挡

总的来说:如果我们要控制图层之间的渲染关系,起码的遮挡关系正确,使用sorting layer 和order in layer 这哥俩二级排序即可。

在sorting layer下拉框中,越下面的,优先级高,渲染顺序靠后,不易被遮挡。

添加角色

在hierarchy窗口右键 ->2D object -> sprite 将素材图片拖到 sprite render 中的 sprite中进行绑定,绑定之前,记得把素材PPU调整为16 。最后将sprite重命名即可。

如果不显示新创建的sprite ,可以选中后看一下sorting layer 是否在最前。

给游戏对象添加组件

没有组件的游戏对象,就像是没有各种器件的汽车空壳,只是看着好看,什么功能也没有。

就像汽车需要它内部的发动机来提供动力,方向盘来操作方向,座椅来载人等等,游戏对象也需要添加各种的组件,来丰富它的功能,比如colider 组件可以给他进行碰撞检测的功能,regidbody组件可以给它附加各种物理特性:重力,质量等,Audio组件可以让它播放音乐,scripts组件可以让我们用代码来控制它的行为…

而此时,我们需要给主角添加一些特别常用的组件 :RigidBody 2d,给主角提供物理特性,collider 2d,给主角一个碰撞体,有很多形状的碰撞体可以选择 ,这里我们根据主角形状可以选择Box Collider 2D 。选择后我们还要将碰撞体的范围和主角的边缘尽量贴合。

此外,地图我们也需要添加碰撞体,hierarchy中选择地形–TileMap ,添加组件TileMap Collider 2D 这个组件会把 这个地形中的每一个单位unit 都绑定上碰撞体。

角色移动

我们如何将我们键盘的按键映射到游戏中的上下左右呢?

Unity上边的工具栏,选择Edit -> Project Settings ->Input ->Axex ->

可以看到一大堆选项了,Horizontal 就对应着我们水平方向的按键,点开可以看到有negative button 和 positive button 意为正和负,实际上就是水平轴正负对应着左和右。此外下面还有一些别的设置比如跳跃,开火什么的。

下面我们添加脚本,用代码给主角添加左右移动的功能。

//代码占位置。

有个课设ddl, 先搁置几天。。。。。

Unity 麦扣老师的《小狐狸》学习记录相关推荐

  1. 【机器学习】<刘建平Pinard老师博客学习记录>线性回归原理

    目录 一.线性回归的模型函数和损失函数: 二.线性回归的算法: 1.梯度下降法: 2.最小二乘法: 三.线性回归的推广:多项式回归 四.线性回归的推广:广义线性回归 五.线性回归的正则化: 一.线性回 ...

  2. 【机器学习】<刘建平Pinard老师博客学习记录>Scikit-learnPandas(NumpyMatplotlib)学习线性回归

    目录 一.数据获取&问题定义: 1.数据获取: 2.问题定义: 二.整理数据: 三.使用Pandas读取数据: 1.导入依赖库: 2.使用Pandas读取函数: 四.数据准备: 1.查看数据: ...

  3. Unity游戏优化(第2版)学习记录8

    Unity游戏优化[第二版]学习记录8 第8章 掌握内存管理 一.Mono平台 1.垃圾回收 2.内存碎片 3.运行时的垃圾回收 4.多线程的垃圾回收 二.代码编译 三.分析内存 1.分析内存消耗 2 ...

  4. Unity 3D官方教程——Adventure Game学习记录

    1.Interactable System: 1.Picture Interactable:Player走到SecurityRoom墙前的那张画 2.Fish Interactable鱼档前的交互 3 ...

  5. 【机器学习】<刘建平Pinard老师博客学习记录>机器学习算法的随机数据生成

    目录 一.Numpy生成随机数: 二.Scikit-learn随机数据生成API介绍: 三.Scikit-learn随机数据生成实例: 1.回归模型随机数据: 2.分类模型随机数据: 3.聚类模型随机 ...

  6. 【机器学习】<刘建平Pinard老师博客学习记录>感知机原理

    目录 一.感知机模型: 二.感知机模型损失函数: 三.感知机模型损失函数的优化方法: 四.感知机模型算法: 五.感知机模型的算法对偶形式: 六.小结: 感知机可以说是最古老的分类方法之一了,在1957 ...

  7. 【机器学习】<刘建平Pinard老师博客学习记录>最小二乘法

    目录 一.最小二乘法的原理与解决的问题: 二.最小二乘法代数解法: 三.最小二乘法的矩阵解法: 四.最小二乘法的局限性和适用场景: 最小二乘法是用来做函数拟合或者求函数极值的方法.在机器学习,尤其是回 ...

  8. 【机器学习】<刘建平Pinard老师博客学习记录>梯度下降(Gradient Descent)

    目录 一.梯度: 二.梯度上升和梯度下降: 三.梯度下降法算法详解: 1.梯度下降的直观解释: 2.梯度下降的相关概念: 3.梯度下降的详细算法: 3.1 梯度下降法的代数方式描述: 3.2 梯度下降 ...

  9. 【机器学习】<刘建平Pinard老师博客学习记录>交叉验证(Cross Validation)

    交叉验证是在机器学习建立模型和验证模型参数时常用的办法.交叉验证,顾名思义,就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏. ...

最新文章

  1. failed to launch: nice -n 0 $HADOOP_HOME/bin/spark-class org.apache.spark.deploy.worker.Worker
  2. Jmeter常见问题
  3. Azure手把手系列 4:深入了解Azure 一块钱当三块用
  4. draggable禁止拖动_通过 JS 实现简单的拖拽功能并且可以在特定元素上禁止拖拽...
  5. oracle_jdbc新建实例,JDBC的操作步骤和实例
  6. 电商美工忙不停,年货节海报素材模板,拯救电商汪
  7. Win32下显示、隐式加载DLL的方法
  8. suse linux运行asp,Linux Supervisor的安装与使用入门---SuSE
  9. VC文件读写操作总结
  10. python中turtle画圆填充颜色_Python之turtle绘图
  11. 你真应该再多了解些Handler机制
  12. 华为转正答辩ppt范文_华为新员工转正答辩
  13. 约瑟夫问题c语言链表41人,约瑟夫问题 C语言链表实现
  14. vi和nano实用操作
  15. java中5 的结果_java第五次实验报告
  16. Boot(重点SCSS☆☆☆☆☆)(day03)
  17. 字节跳动疯狂挖人,校招平均年薪30万,我还有机会吗?
  18. 苹果手机免越狱群控无需硬件即插即用高清投屏控制操作
  19. Android定位功能(二)
  20. 前端开发调试之代理配置

热门文章

  1. 对于用假设检验判断某人有罪无罪的理解
  2. 创建你自己的信息图表
  3. 目前常见的散列(Hash)算法
  4. SimpleFactory模式
  5. 干货分享:TikTok五大完美引流方案
  6. mysql 自动备份 发邮件_MYSQL自动备份并发送邮件工具
  7. 计算机接口统称,石油华东《计算机接口技术》2016年秋学期在线作业一二三答案...
  8. 数据的完整性(正确性和准确性):分类-实体完整性:主键约束、唯一约束、自动增长列。域完整性-非空约束、默认值约束、检查约束。引用完整性-一对一、一对多、多对多
  9. Clickhouse 官方测试数据集之SSB
  10. Struts2项目实战 微云盘 效果展示