2D小游戏上
搭建场景
底层背景
1.对于很多2D游戏来说,主角移动的时候背景是不动的,只是一个装饰品,对于这样不产生任何交互的装饰品,常见的手段是使用TileMap,通过瓦片填充的方式涂涂画画就好了。也就是想画画一样,我们有图层,后面画的事物就是可以覆盖在上一级的内容上,就像在游戏当中,树木就是比纯背景更加的突出,它可以遮住人物从而避免人物被射击。树木其实也是不动的静态对象,也没有交互,也是背景。所以这个时候就会有底层背景,中层背景,上层背景,在进行场景设计的时候一定要先对场景进行整体分割。如下图,中间的粉色条纹和四周的边框就是底层背景,草地和主角会比粉条背景更高一级,所以我们先有个概念,先做底层,再做中层。
1.粉条背景
这种背景很好做,因为是平铺,只要找到相关瓦片就可以铺满,操作步骤如下
平铺调色板
窗口-》2D-》平铺调色板
调出平铺调色板后的建议布局,同时需要在项目面板的Asset文件夹下新建两个文件夹用来存放瓦片和调色板
新建调色板并保存在Asset的新建文件夹–调色板中,可以随意取名1,2,3
矩形瓦片
在层级面板右键选择2D对象-》瓦片地图-》矩形
此时会生成一个tilemap
制作瓦片
将Asset里面的精灵图片拖拽进入平铺调色板内建立瓦片资产
1.工具认知
选择工具可以做很多操作
2.问题解决
有一部分人可能会觉得自己的瓦片并不能铺满整个网格,有两种解决办法,如果有这个瓦片的精灵图片,那么你可以选择项目面板里面的精灵图片,来到此图片的检查器面板更改它的每单位像素数,如果图片没有填充满则将此数值改小,若图片过大则将此数值增大,一定要点击应用。
第二种解决办法:就要用到上一张图片里面的办法,利用选择工具,更改瓦片的缩放,只要更改x,y即可
更改后的效果图如下:
通过这两种办法就可以将瓦片不适应图框的问题解决啦,取其一就好。
中层背景
我制作了两个Grid,因为中层背景不需要填充这么大的格子,根据方框大小调整了如下参数,大家可以参考
可能这样大家看不出来区别,我再放两张图,对比格子大小,因为在tilemap里面格子大小决定了瓦片的适配度,其他步骤相同
制作并控制动画
多张精灵图片制作动画
1.在项目面板中选中能够制作连续动画的资产
2.展开包含了动画的图片
3.通过Shift或者Ctrl点选所有的图片
4.鼠标左键按住拖拽至层级面板
注意:在做动画之前需要在项目面板新建动画文件夹存储动画
1.在弹出的面板中将动画保存至新建的动画文件夹内
单张精灵图片制作动画
1.在层级面板选中要制作动画的玩家,在检查器面板中添加Animator组件,如下图5指代的组件
2.在项目面板中右键新建动画控制器改名为PinkManCtrl
3.将新建的PinkManCtrl拖入玩家身上Animator的控制器方框内
1.双击PinkManCtrl会打开动画器面板
2.将Idle与Run(不会制作可以参考多张图片制作动画)拖进动画管理器内
3.选择玩家,按下Ctrl+6,选择新建clip
4.例如创建Drop,则打开项目面板选择Fall的图片,拖拽进动画面板即可
根据这个办法创建Jump,跳跃动画
动画控制器
1.在PinkManCtrl动画控制器内部创建Bool参数,命名为isJump,isRun,连接方式如下面二图所示,要结合看
2.连接好了动画关系之后就可以更改Player的脚本了,player要稍作更改
跳跃
一级跳
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
//移动速度
[SerializeField]
private float speed = 3;
//跳跃速度
[SerializeField]
private float jumpSpeed = 3;
//全局2D刚体组件变量
private Rigidbody2D rig2D;
private bool isGround;
void Start()
{
//通过变量承接玩家身上的2D刚体组件
rig2D = GetComponent<Rigidbody2D>();
}
void FixedUpdate()
{
Vector2 moveDir = Vector2.zero;
if