2D游戏导入的图片,Texture Type会默认变为 Sprite(2D and UI)
,此时可以直接将其拖拽进场景成为GameObject;也可创建一个空物体,手动添加Sprite Renderer
组件。
Sprite 属性
- Sprite Mode:Single(默认)。Multiple(包含多个精灵,可分割或动画)。
注意,2D纹理本身不是精灵,其下附属的展开内容才是精灵。 - Pixels Per Unit:Unity中每个格子对应图中多少像素
Tilemap(瓦片地图)
该功能依赖包管理器中安装2D Tilemap Editor
包。
将场景平面划分为网格状,并在网格上绘制内容。
瓦片地图
- 创建瓦片地图 Hierarchy - Create - 2D Object - Tilemap - Rectangular
- 创建调色板 Window - 2D -Tile Palette(打开调色板窗口) - Create New Palette
将精灵/瓦片拖拽入调色板(一个调色板里可以容纳多个),资源管理器会自动创建瓦片文件。 - 蘸取调色板中的格子,即可在场景中刷涂。刷涂部分的内容会自动加入第一步创建的瓦片地图。
拆分瓦片集
拆分后可以让 2D Texture 下出现多个 Sprite
- 选中一个Sprite - Sprite Mode - Multiple
- Sprite Editor - slice
其中 Automatic 会根据透明像素自动分割,也可以手动在画面中拖拽出绿框进行分割
为 Tilemap 设置碰撞
- 方法1:在需要存在碰撞的位置创建空物体,并为其添加Collider组件
- 方法2:为Tilemap 添加 Tilemap Collider 2D(瓦片碰撞)组件和 Composite Colloder 2D (复合碰撞体)组件
前者会让该Tilemap中所有Collider Type
为Sprite
(默认值)的瓦片都具有碰撞效果(对于不想碰撞的瓦片,可以选中其瓦片源文件,将Collider Type
改为None
)
后者会合并前者中的多处碰撞以减少优化性能(因此会自动额外添加刚体组件)。且添加后还需要勾选前者的Used by Composite
选项才能生效。
精灵平铺
2D物体-》Sprite Renderer组件-》Draw Mode
- Simple:默认值,强行拉伸
- Sliced:根据九宫格切片,中间部分拉升,四角不变
- Tiled:根据九宫格切片,中间部分重复平铺,四角不变
其中九宫格切片可在Sprite Editor
中拖动绿线调整(默认在四边)。
2D物体的渲染层级
-
Sprite Renderer 组件 - Additional Settings - Order in Layer
数字越大渲染越晚,表现为覆盖在最高层 -
Edit - Project Settings - Graphic - Camera Settings - Tranparency Sort Mode
可用于控制相同 layer 时渲染的先后顺序
若选为 Custom Axis 则按照 Tranparency Sort Axis 渲染。可实现随着物体移动,根据坐标位置不同产生不同的优先级
可通过Sprite Renderer 组件 - Sprite Sort Point
切换中心点或轴心点来进行坐标位置比较
其中轴心点(Pivot)的位置默认在中心点(Center),可以在精灵的设置(Sprite Editor)中修改,拖拽蓝色圆圈或直接设置均可。
动画
-
为游戏对象添加 Animator 动画组件
可将动画分配给场景中的游戏对象,比老版本的Animation
组件更方便。 -
Assets->右击->Create->Animator Controller 创建动画控制器
可根据当前游戏对象的状态控制播放/切换对应的动画(也称为动画状态机)。 -
Window->Animation->Animation 打开动画制作窗口
-
选中带有Animator组件并配置好Animator Controller的游戏对象,在动画管理窗口中创建动画
.anim
文件(即一个Controller对应多个anim) -
操作时间轴
可以通过鼠标框选选中时间轴中多个关键帧,然后拖动以等比缩放时间- 点击
Add Peoperty
,可以选择该物体已有组件的某个属性,并在时间轴上设置关键帧 - 点击录制按钮,然后直接在对应帧进行游戏对象的修改操作,并自动记录
- 将资源中的精灵拖拽进时间轴(本质是改变了
Sprite Renderer
组件Sprite
属性)
- 点击
-
Window->Animation->Animator 打开动画控制器窗口
可以将.anim
动画文件拖拽以添加进动画控制器窗口
从Entry出发的为必播动画(default),可通过右键设置。- Layers:动画层级,用于处理多个动画同时生效(如边跑边射击)时的优先级
- Parameters:用于控制多个动画状态之间切换的变量
在不同状态和动画之间通过连线(Make Transition),表示可切换关系。
在Script中修改变量后,一旦满足连线的检查器中Conditions
设置的变量条件,就会切换到相应的动画:
private Animator animator;
animator = GetComponent<Animator>();
animator.SetInteger("变量名", -1);
网友评论