Unity 2DRPG 留下问题,有时会移动不了

乱七八糟的东西

格子像素数

Unity 2DRPG 留下问题,有时会移动不了

格子像素点这里格子像素数是指这个格子有多少个像素

Unity 2DRPG 留下问题,有时会移动不了

素材处可以设置素材的格子像素数

材料切割

single整体的,multiple多重组成的,plygon多边形。这里选择multiple,然后点击Sprite Editor

Unity 2DRPG 留下问题,有时会移动不了

点击右上Slice,选择Type,Automatic,Automatic是自动切割,会帮你吧图形完整切割好,Grid by Cell Size是按照单元像素数切割,第三个不知道。这里使用Grid by Cell Size,设置像素点大小后,切割即可。

Unity 2DRPG 留下问题,有时会移动不了

Window->2D->Tile Palette打开Tile Palette窗口。将切割好的东西拖进去打开即可。

新建Hierarchy一个TileMap。

sorting layer

这是sorting layer不是layer,这个要区分好。

Unity 2DRPG 留下问题,有时会移动不了

这里可以添加,可以理解为这是一个list,越下面的,就在游戏中最前面显示。

同一sorting layer可以使用order in layer排列,越大越在前面显示

角色

角色使用一个2D->Square装载,添加一个RigindBody 2D(刚体),添加碰撞体,为Tilemap添加碰撞体

其他

摄像机Z坐标调整

关于2D的一些概念(不全,有些官网有些还看不懂)

2D游戏

2D图形

2D 图形对象称为__精灵__。精灵本质上只是标准纹理,但可通过一些特殊技巧在开发过程中组合和管理精灵纹理以提高效率和方便性。Unity 提供内置的 Sprite Editor,允许从更大图像提取精灵图形。因此可以在图像编辑器中编辑单个纹理内的多个组件图像。例如,可以使用此工具将角色的手臂、腿和身体保持为一个图像中的单独元素。

应使用 Sprite Renderer 组件而不是用于 3D 对象的 Mesh Renderer 来渲染精灵。可通过 Components 菜单 (Component > Rendering > Sprite Renderer) 将精灵渲染器 (Sprite Renderer) 添加到游戏对象,也可直接创建已附加精灵渲染器的游戏对象(菜单:GameObject > 2D Object > Sprite)。

此外,可以使用 Sprite Creator 工具来创建 2D 占位图像。

2D 物理

Unity 有一个独立物理引擎来处理 2D 物理,以便利用仅适用于 2D 的优化。2D 物理组件对应于标准 3D 物理组件(例如刚体 (Rigidbody)盒型碰撞体 (Box Collider)铰链关节 (Hinge Joint)但名称中附加了“2D”字样。因此,精灵可以配备 2D 刚体 (Rigidbody 2D)2D 盒型碰撞体 (Box Collider 2D)2D 铰链关节 (Hinge Joint 2D)。大多数 2D 物理组件都是 3D 对等组件的简单“平坦”版本(例如,_2D 盒型碰撞体_是正方形,而_盒型碰撞体_是立方体),但是也有一些例外。

2D 排序

概述

Unity 根据优先级顺序对渲染器进行排序,而优先级顺序取决于渲染器的类型和用途。可以通过渲染队列指定渲染器的渲染顺序。通常有两个主要队列:不透明队列透明队列。2D 渲染器主要位于透明队列中,包括精灵渲染器 (Sprite Renderer)瓦片地图渲染器 (Tilemap Renderer)精灵形状渲染器 (Sprite Shape Renderer) 类型。

透明队列按优先级排序

透明队列中的 2D 渲染器通常遵循以下优先级顺序:

1.排序图层和图层中的顺序 2.指定渲染队列 3.与摄像机的距离 * 透视/正交 * 自定义轴排序模式 * 精灵排序点 4.排序组 5.材质/着色器 6.多个渲染器具有相同的排序优先级时,将由仲裁程序决定优先级。

还有其他一些因素可能导致排序顺序与常规优先级顺序不同。这些因素因项目而异。

排序图层和图层中的顺序

可以通过 Inspector 窗口或通过 Unity Scripting API 将排序图层 (Sorting Layer)图层中的顺序 (Order in Layer)(位于渲染器的 Property 设置中)用于所有 2D 渲染器。为确定渲染器在渲染队列中的优先级,可以将渲染器设置为现有的排序图层,或创建一个新排序图层。更改 Order in Layer 的值,即可设置渲染器在同一排序图层中的其他渲染器之间的优先级。

指定渲染队列

可以在渲染器材质设置中或渲染器材质的着色器设置中指定渲染器的渲染队列类型。这对于使用不同材质的渲染器的分组和排序很有用。请参阅关于 ShaderLab:SubShader 标签的文档以了解更多详细信息。

ShaderLab:SubShader 标签

子着色器使用标签来告知它们期望何时以何种方式被渲染到渲染引擎。

语法
Tags { "TagName1" = "Value1" "TagName2" = "Value2" }

指定 TagName1 具有 Value1TagName2 具有 Value2。可根据需要添加任意数量的标签。

详细信息

从根本上说,标签就是键/值对。在 SubShader 中,标签用于确定子着色器的渲染顺序和其他参数。请注意,以下由 Unity 识别的标签必须位于 SubShader 部分中,不能在 Pass 中!

除了 Unity 可以识别的内置标签外,您还可以使用自己的标签并使用 Material.GetTag 函数来查询这些标签。

渲染顺序 - Queue 标签

您可以使用 Queue 标签来确定对象的绘制顺序。着色器决定其对象属于哪个渲染队列,这样任何透明着色器都可以确保它们在所有不透明对象之后绘制,依此类推。

有四个预定义的渲染队列,但预定义的渲染队列之间可以有更多的队列。预定义队列包括:

  • Background - 此渲染队列在任何其他渲染队列之前渲染。通常会对需要处于背景中的对象使用此渲染队列。
  • Geometry(默认值)- 此队列用于大部分对象。不透明几何体使用此队列。
  • AlphaTest - 进行 Alpha 测试的几何体将使用此队列。这是不同于 Geometry 队列的单独队列,因为在绘制完所有实体对象之后再渲染经过 Alpha 测试的对象会更有效。
  • Transparent - 此渲染队列在 GeometryAlphaTest 之后渲染,按照从后到前的顺序。任何经过 Alpha 混合者(即不写入深度缓冲区的着色器)都应该放在这里(玻璃、粒子效果)。
  • Overlay - 此渲染队列旨在获得覆盖效果。最后渲染的任何内容都应该放在此处(例如,镜头光晕)。

与摄像机的距离

Camera 组件根据其 Projection 设置对渲染器进行排序。两个选项分别是 PerspectiveOrthographic

透视 (Perspective)

在此模式下,渲染器的排序距离是渲染器与摄像机位置的直接距离。

正交 (Orthographic)

渲染器的排序距离是渲染器位置与摄像机沿着摄像机视图方向的距离。对于默认的 2D 设置,此方向是指沿着 (0, 0, 1) 轴。

将 Camera 组件设置为 PerspectiveOrthographic 时,Unity 会自动设置摄像机的 TransparencySortMode 以匹配所选的模式。可以通过两种方式手动设置透明排序模式 (Transparency Sort Mode):

  • 打开 Project Settings,选择 Graphics,然后在 Camera Settings 下设置 Transparent Sort Mode
  • 通过脚本 API 设置摄像机的 TransparencySortMode

摄像机 Transparency Sort Mode 设置位于 Project Settings 中的 Graphics 类别下(主菜单:Edit > Project Settings > Graphics)。当此设置为 Default 时,Camera 组件的 Projection 设置将具有更高优先级。当此设置为 Default 以外的选项时,Camera 组件的 Projection 设置保持不变,但摄像机的 Transparency Sort Mode 将更改为该选项。

通过 Project Settings 和脚本 API 提供的另一个选项是自定义轴 (Custom Axis) 排序模式

自定义轴排序模式

选择此模式可根据 Project Settings(主菜单:Edit > Projecting Settings > Graphics > Transparency Sort Axis)中设置的渲染器在自定义轴上的距离对渲染器进行排序。此模式通常用于具有等距瓦片地图 (Isometric Tilemaps) 的项目中,以便在瓦片地图 (Tilemap) 上正确排序和渲染瓦片精灵 (Tile Sprites)。请参阅创建等距瓦片地图以了解更多信息。

精灵排序点

默认情况下,精灵的 **Sort Point(排序点)**设置为其 Center,因此 Unity 会测量摄像机的变换位置与精灵的中心之间的距离,以确定它们在排序过程中的渲染顺序。另一种选项是将精灵的 Sort Point 设置为世界空间中的 Pivot 位置。为此,请在精灵的 Sprite Renderer 属性设置中选择 Pivot 选项,然后在 Sprite Editor 中编辑精灵的 Pivot 位置。

排序组

排序组 (Sorting Group) 是一个组件,它将具有共同根的渲染器分组到一起以进行排序。同一排序组中的所有渲染器具有相同的排序图层 (Sorting Layer)、图层中的顺序 (Order in Layer)与摄像机的距离 (Distance to Camera)。请参阅有关排序组 (Sorting Group) 组件及其相关设置的文档以了解更多详细信息。

材质/着色器

Unity 将具有相同材质设置的渲染器排序到一起,以获得更高效的渲染性能,例如在进行动态批处理时。

仲裁程序

当多个渲染器具有相同的排序优先级时,由仲裁程序决定 Unity 将渲染器放置在渲染队列中的顺序。因为这是您无法控制的内部过程,所以您应该使用排序选项(例如 Sorting LayersSorting Groups)确保所有渲染器具有不同的排序优先级。

刚体 2D

刚体组件将对象置于物理引擎的控制之下。

2D 刚体组件会覆盖变换组件,并将其更新为 2D 刚体定义的位置/旋转。请注意,虽然仍然可以通过自行修改变换组件来覆盖 2D 刚体(因为 Unity 会公开所有组件上的所有属性),但是这样会导致各种问题,例如游戏对象相互穿过或嵌入等问题以及不可预测的移动。

添加到同一游戏对象或子游戏对象的任何 2D 碰撞体组件都隐式附加到该 2D 刚体。2D 碰撞体附加到 2D 刚体时,两者一起移动。严禁使用变换组件或任何碰撞体偏移来直接移动 2D 碰撞体;而应移动 2D 刚体。这样将提供最佳性能并确保正确的碰撞检测。连接到同一 2D 刚体的多个 2D 碰撞体不会相互碰撞。这意味着可以创建一组碰撞体来有效充当单一复合碰撞体,使所有碰撞体都与 2D 刚体同步移动和旋转。

精灵(Sprite)

概念

__精灵__是 2D 图形对象。如果习惯于在 3D 空间中工作,__精灵__本质上只是标准纹理,但可通过一些特殊技巧在开发过程中组合和管理精灵纹理以提高效率和方便性。

Unity 提供一个占位的 Sprite Creator、一个内置的 Sprite Editor、一个 Sprite Renderer 和一个 Sprite Packer

精灵工具

Sprite Creator

使用 Sprite Creator 可在项目中创建占位精灵,这样就可以继续开发而无需获取或等待图形。

Sprite Editor

Sprite Editor 允许从较大的图像中提取精灵图形,并在图像编辑器中编辑单个纹理内的多个分量图像。例如,可以使用此工具将角色的手臂、腿和身体保持为一个图像中的单独元素。

Sprite Renderer

应使用 Sprite Renderer 组件而不是用于 3D 对象的 Mesh Renderer 来渲染精灵。使用该组件可将图像显示为__精灵__,以便在 2D 和 3D 场景中均可使用。

Sprite Packer

使用 Sprite Packer 可根据项目来优化视频内存的使用和性能。

导入和设置精灵

精灵__是 Unity 项目中的一种__资源。可通过 Project 视图查看精灵,并可立即使用。

可通过两种方式将__精灵__引入项目:

1.在计算机的 Finder (Mac OS X) 或文件资源管理器 (Windows) 中,直接将图像放入 Unity 项目的 Assets 文件夹中。

Unity 会检测到此图像并将其显示在项目的 __Project__ 视图中。

2.在 Unity 中,选择 Assets > Import New Asset 以显示计算机的 Finder (Mac OS X) 或文件资源管理器 (Windows)。

从该位置中选择所需的图像,Unity 会将其放在 __Project__ 视图中。
将图像设置为精灵

如果项目模式设置为 2D,则导入的图像将自动设置为__精灵 (Sprite)__。有关将项目模式设置为 2D 的详细信息,请参阅 2D 还是 3D 项目

但是,如果项目模式设置为 3D,则图像将设置为__纹理 (Texture),因此需要更改资源的__纹理类型 (Texture Type)

1.单击该资源以查看其 Import Inspector。 2.将 Texture Type 设置为 Sprite (2D and UI)

Unity 2DRPG 留下问题,有时会移动不了在资源的 Inspector 中将 Texture Type 设置为 Sprite (2D and UI)

有关精灵 Texture Type 设置的详细信息,请参阅 Texture type: Sprite (2D and UI)

对精灵排序

Unity 中的渲染器按几个条件排序,例如图层顺序或与摄像机的距离。Unity 的 GraphicsSettings(菜单:Edit > Project Settings__,然后选择 Graphics__ 类别)提供了一项名为 Transparency Sort Mode 的设置,此设置可根据精灵相对于摄像机的位置来控制精灵的排序方式。更具体地说,此设置使用精灵在轴上的位置来确定哪些精灵相对于其他精灵透明,而哪些不透明。

例如,若要沿 Y 轴对精灵进行排序,可使用此设置。这种情况在 2D 游戏中很常见,通常需要将较高的精灵排在较低的精灵之后,这样会看起来更远。

Unity 2DRPG 留下问题,有时会移动不了

Transparency Sort Mode 有四个可用选项:

Unity 2DRPG 留下问题,有时会移动不了

  • Default - 根据摄像机的 Projection 模式设置为 Perspective 还是 Orthographic 来进行排序
  • Perspective - 根据透视图进行排序。透视图根据从摄像机位置到精灵中心的距离对精灵进行排序。
  • Orthographic - 根据正交视图进行排序。正交视图根据沿视图方向的距离对精灵进行排序。
  • Custom Axis - 根据 Transparency Sort Axis 中设置的指定轴进行排序

如果已将 Transparency Sort Mode 设置为 Custom__,则需要设置 Transparency Sort Axis__:

Unity 2DRPG 留下问题,有时会移动不了

如果 Transparency Sort Mode 设置为 Custom Axis,则 Scene 视图中的渲染器将根据此轴与摄像机之间的距离进行排序。应使用介于 –1 和 1 之间的值来定义此轴。例如:X=0、Y=1、Z=0 将此轴方向设置为向上。X=1、Y=1、Z=0 将此轴方向设置为 X 和 Y 之间的对角线方向。

例如,如果希望精灵的行为类似于上图中的精灵(在 y 轴值较高的精灵将站在 y 轴值较低的精灵的后面),请将 Transparency Sort Mode 设置为 Custom Axis__,并将 Transparency Sort Axis__ 的 Y 值设置为大于 0 的值。

使用脚本对精灵排序

还可以使用脚本通过修改每个摄像机的以下属性来按照每个摄像机对精灵排序:

例如:

var camera = GetComponent<Camera>();

camera.transparencySortMode = TransparencySortMode.CustomAxis;

camera.transparencySortAxis = new Vector3(0.0f, 1.0f, 0.0f);

Sprite Renderer

Sprite Renderer 组件用于渲染__精灵__并控制其在 2D 和 3D 项目场景中的可视化效果。

创建精灵 (GameObject > 2D Object > Sprite) 时,Unity 会自动创建一个附加了 Sprite Renderer 组件的游戏对象。还可以通过 Components 菜单 (Component > Rendering > Sprite Renderer) 将该组件添加到现有的游戏对象。

属性

Unity 2DRPG 留下问题,有时会移动不了Sprite Renderer Inspector

*属性* *功能*
Sprite 定义该组件应渲染的精灵纹理。单击右侧的小圆点可打开对象选择器窗口,然后从可用精灵资源列表中进行选择。
Color 定义精灵的顶点颜色,用于对精灵的图像进行着色或重新着色。使用拾色器设置渲染的精灵纹理的顶点颜色。请参阅此表下方的颜色部分以查看示例。
Flip 沿选定的轴翻转精灵纹理。这不会翻转游戏对象的变换位置。
Material 定义用于渲染精灵纹理的材质
Draw Mode 定义精灵尺寸发生变化时的缩放方式。从下拉框中选择以下选项之一。
Simple 当尺寸发生变化时,整个图像都缩放。这是默认选项。
Sliced 如果精灵为 9 切片精灵,选择此模式。
Size (Sliced 或 Tiled) 输入精灵的新 Width 和 Height 值以正确缩放 9 切片精灵。在应用 9 切片属性时,也可使用矩形变换组件工具来缩放精灵。
Tiled 默认情况下,此模式会使 9 切片精灵的中间部分在精灵尺寸发生变化时平铺而不是缩放。使用 Tile Mode 可控制精灵的平铺行为。
Continuous 这是默认的 Tile Mode 设置。在 Continuous 模式下,当精灵尺寸发生变化时,中间部分会均匀地平铺。
Adaptive 在 Adaptive 模式下,精灵纹理在尺寸发生变化时会拉伸,类似于 Simple 模式。当更改的尺寸的缩放大小达到 Stretch Value 时,中间部分开始平铺。
Stretch Value 使用滑动条设置 0 到 1 之间的值。最大值为 1,表示原始精灵缩放的两倍。
Sorting Layer 设置精灵的排序图层 (Sorting Layer),此图层用于控制渲染期间的精灵优先级。从下拉框中选择现有的排序图层,或创建新的排序图层。
Order In Layer 设置精灵在其排序图层中的渲染优先级。首先渲染编号较低的精灵,编号较高的精灵叠加在前者之上。
Mask Interaction 设置精灵渲染器在与精灵遮罩交互时的行为方式。请参阅下面的遮罩交互 (Mask Interaction) 部分中不同选项的示例。
None 精灵渲染器不与场景中的任何精灵遮罩交互。这是默认选项。
Visible Inside Mask 精灵在精灵遮罩覆盖精灵的地方是可见的,而在遮罩外部不可见。
Visible Outside Mask 精灵在精灵遮罩外部是可见的,而在遮罩内部不可见。精灵遮罩会隐藏其覆盖的精灵部分。
Sprite Sort Point 在计算精灵和摄像机之间的距离时,在精灵中心 (Center) 或其轴心点 (Pivot Point) 之间进行选择。请参阅精灵排序点 (Sprite Sort Point) 部分以了解更多详细信息。

详细信息

颜色 (Color)

下图显示了在__精灵渲染器 (Sprite Renderer)__ 的 Color 设置中更改 RGB 值的效果。要更改精灵的不透明度,请更改其 Color 属性的 Alpha (A) 通道的值。

Unity 2DRPG 留下问题,有时会移动不了**左:**原始精灵。**右:**精灵的 RGB 颜色设置为红色。

材质 (Material)

使用材质的材质和着色器设置可控制 Unity 如何渲染材质。请参阅材质、着色器和纹理以了解有关这些设置的更多信息。

新创建的精灵的默认材质为 Sprites - Default。场景光照不会影响此默认精灵。要让精灵对光照做出反应,请指定材质 Default - Diffuse。要执行此操作,请单击 Material 字段旁边的小圆圈以显示对象选择器窗口,然后选择 Default-Diffuse 材质。

遮罩交互 (Mask Interaction)

遮罩交互可控制精灵渲染器与精灵遮罩交互的方式。从下拉菜单中选择 Visible Inside MaskVisible Outside Mask。以下示例演示了使用方形精灵和圆形遮罩时每个选项的影响:

要与精灵遮罩进行交互,请从下拉菜单中选择 Visible Inside MaskVisible Outside Mask

Unity 2DRPG 留下问题,有时会移动不了Unity 2DRPG 留下问题,有时会移动不了

精灵排序点 (Sprite Sort Point)

仅当精灵渲染器的 Draw Mode 设置为 Simple 时,此属性才可用。

在 2D 项目中,主摄像机 (Main Camera) 默认设置为正交投影 (Orthographic Projection) 模式。在此模式下,Unity 按照精灵相对于摄像机的距离(沿着摄像机视图的方向)的顺序渲染精灵。

Unity 2DRPG 留下问题,有时会移动不了**正交摄像机:**Side 视图(上)和 Game 视图(下)

默认情况下,精灵的 Sort Point 设置为其 Center,因此 Unity 会测量摄像机的变换位置与精灵的中心之间的距离,以确定它们的渲染顺序。

如果要将 Sort Point 设置为除 Center 以外的值,请选择 Pivot 选项。在 Sprite Editor 中可编辑精灵的 Pivot 位置。

上一篇:PyTorch——(6)2D函数优化实例


下一篇:《图解HTTP》读书笔记(六:HTTP状态码)