素材整理
将图片设置设置为预设值
将一个图片设置好需要的样式后,点击
将该样式进行保存,然后可以应用于其他图片
导入人物素材
为了保证角色的图层属于同一个类别,因此我们需要在一个父物体中设置Sort Group
用于归类所有的需要渲染的图层。
由于是2D游戏有图层之间的关系,因此需要设置一个单独的渲染图层,在edit layer
中新增一个新的sort layer
,将sort Layer
设置为Instance
表示所有和人物有关的渲染都用该图层,并将所有的内容实例相关的sort layer都设置该图层
注意需要将所有的内容的渲染的参考点Sprite Sort Point
设置为Pivot
,这样才能保证覆盖的正确性。
设置图层覆盖条件
在Unity中默认以Z轴为渲染覆盖的判定,由于在2D俯视角游戏中没有z轴的概念,因此采用y轴作为判断覆盖的条件(即某个GO的y轴大于另一个GO的y轴的位置,即可以实现图层的覆盖)
因此需要在edit -> project setting-> graphics->transparency Sort Axis
中将x和z设置为0,y设置为1,同时向mode设置为CustomAxis
即可实现。
实现人物的移动
为人物添加碰撞体和刚体(注意俯视角的游戏 重力一定要设置为0)
人物的移动方向可以通过input.getAxis
的方式获得,而具体的方向需要通过x轴和y轴进行组合。
|
|
具体的移动方式在2D横板游戏中是给rigid body
添加一个力,但在俯视角的游戏中通常是获得当前坐标,加上方向坐标 * 移动速度
|
|
两个方法的调用
|
|
绘制地图
- 首先为需要执行的内容绘制对应的图层,比如多层的地面,水沟,土地等
sorting layer用于处理所有渲染的顺序关系,其中越靠后的物体优先级越高,越后渲染(在2D图层中,也就会在低优先级图层的上方)
layers用于处理所有和碰撞和相机射线(是否被相机所显示,以及遮挡剔除效果)有关的内容
- 通过设置一个不变的场景来避免每次切换场景都重新生成数据
新建一个场景,然后将场景直接拖入主场景的hierachy面板中,并删除其camera,然后将对应的地图结构存储进入新的场景
这样我们就能始终用不变的人物信息和摄像头来控制场景
此时可以将该场景作为一个模板数据,这样就可以创建多个不同的地图,完成不同场景的切换效果。
- 为tile maps设置调色盘
点击tile map后,选择
创建一个新的调色盘,然后将所有被切割好的素材拖拽进入调色盘中,就可以通过调色盘对地图进行绘制了,注意需要选中对应的Tile Map,该tile map需要先设置好对应的sorting layer
- 有规律地绘制地图
创建绘制规则地图的2D->Tile -> Rule Tile
然后设置具体的绘制规则
- 消除2D游戏的瓦片缝隙
设置一个Sprite Atlas用于将整个地图打包为一个图片2D - Sprite Atlas
, 然后将所有需要使用的素材都放入该Atlas中,并设置对应的压缩方式
设置相机
创建Cinemachine
,跟随玩家,然后再主相机中添加``设置适合于当前项目的内容
然后在CM中添加对应的Pixel Perfect Camera
,
并且为CM设置合适的Dead Zoom等内容
为瓦片地图添加碰撞
为设置的瓦片地图的Collision
层添加碰撞组件Tilemap Collider 2D
同时为了保证我们添加的碰撞是一个整体,而不是独立的瓦片,因此需要添加组件Composite Collider 2D
(此时会自动添加rigid body
组件)
将rigid body
的类型改为静态,并将tilemap collider 2D
修改为Used by composite
,并将瓦片渲染关闭
此时即可添加对应碰撞图层,且不会显示该图层。
设置树的预制体
在生成树的预制体,首先需要自定义一颗树,为了定义树的动画,需要将树分为树冠和树桩,此时树的父物体并不能设置sorting group,否则会导致渲染的锚点改变,而出现渲染错误。
然后单独为树冠设置动画即可。
动画则是将所有动画帧都放在动画序列上,在不同的时刻播放不同的树冠的图片即可