二十五.关卡地图

关卡地图

1.新建场景

2.新建Tile Palette,命名为OverWorld

请添加图片描述

保存在Tiles下新建的OverWorld文件夹下

请添加图片描述

3.导入资源

将2D Platformer Assets/Graphics/Overworld文件夹下Overworld_tiles_Padded拖到新建的OverWorld Palette下,并保存在新建的Assets/Tiles/OverWorld文件夹下

请添加图片描述

4.制作地图

在Grid下新建Tilemap,将两个Tilemap分别命名为Ground和Overlay,分别用来制作背景地图和关卡选择地图

请添加图片描述

将两个Tilemap的Sorting Layer设置为World,并将Overlay的Order设置为1,使其在Ground上层

请添加图片描述

分别制作地图Ground

请添加图片描述

Overlay

请添加图片描述

5.关卡点

新建空对象,命名为MapPointHolder,用于保存各个关卡点和节点

在MapPointHolder下新建空节点MapPoint,并制作预制体,保存到Prefabs/LevelSelect文件夹(新建)下

复制多个MapPoint,移动到节点和转角

请添加图片描述

6.新建脚本MapPoints

新建脚本MapPoint,添加组件到第一个

设置overrides,使全部预制体生效

请添加图片描述

添加参数

//上下左右的MapPoint点
public MapPoint up;     //上
public MapPoint right;  //右
public MapPoint down;   //下
public MapPoint left;   //左

public bool isLevel;    //是否是关卡

设置所有的MapPoint点的上下左右值,是否是关卡

请添加图片描述

7.添加小狐狸图标

拖入小狐狸图标岛场景,重命名为Player,用来显示当前选择的地方

移动小图标到关卡1的地方

请添加图片描述

添加背景音乐到场景,重命名为LevelSelectMusic

请添加图片描述

设置音乐循环,以及输出混响

请添加图片描述

8.新建脚本LevelSelectPlayer

在Scripts文件夹下,新建脚本文件,用来控制关卡界面的player,并添加组件到Player上绑定

请添加图片描述

添加参数

public MapPoint currentPoint; //当前所在的point点

public float moveSpeed;     //移动速度

新建函数,设置下一个移动点

//设置下一个移动点
public void SetNextPoint(MapPoint nextPoint)
{
    currentPoint = nextPoint;
}

在Update()中,编辑移动时逻辑

void Update()
{
    //更新Player的位置 移动效果
    transform.position = Vector3.MoveTowards(transform.position, currentPoint.transform.position, moveSpeed* Time.deltaTime);
    
    if(Vector3.Distance(transform.position, currentPoint.transform.position) < 0.1f)    //防止胡乱移动
    {
        //上下左右移动
        if (Input.GetAxisRaw("Horizontal") > 0.5f)
        {
            if (currentPoint.right != null)
            {
                SetNextPoint(currentPoint.right);
            }
        }

        if (Input.GetAxisRaw("Horizontal") < -0.5f)
        {
            if (currentPoint.left != null)
            {
                SetNextPoint(currentPoint.left);
            }
        }
        if (Input.GetAxisRaw("Vertical") > 0.5f)
        {
            if (currentPoint.up != null)
            {
                SetNextPoint(currentPoint.up);
            }
        }

        if (Input.GetAxisRaw("Vertical") < -0.5f)
        {
            if (currentPoint.down != null)
            {
                SetNextPoint(currentPoint.down);
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值