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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值