接下来,我们来尝试添加多个地图,并实现地图的切换。
教程素材提供了 4 张不同的地图:森林、基地、城市、跨海大桥。不同的地图有不同的边界信息、地图角色大小信息等。
实现地图的切换:
- 首先,新建变量“当前地图名”,用于存放当前地图名称。
- 然后,在背景地图角色中,编写下面的代码:
- 创建自制积木“载入地图”,用于根据不同的地图,设置地图的边界、地图角色大小、视野缩放、碰撞箱缩放等信息;
- 将背景造型切换为“当前地图名”,将遮挡物造型切换为“当前地图名t”(你也可以把遮挡物换成别的名字)
3.接着,我们来到“地图碰撞箱”角色,代码调整如下;
a. “碰撞箱缩放系数”已在地图背景角色中设置,此处直接删除。
b. 等待 0 秒会跳过一帧,用于等待地图信息(地图的大小、地图名称)初始化后,再执行后面的代码(避免地图的大小、名称还没设置,就执行后面的代码,导致出错);
c. 将碰撞箱造型根据地图名称切换
4.为了方便通过鼠标坐标查看地图边界坐标,我们可以添加一个调试功能:当按下空格键,就显示鼠标坐标;再次按下空格就隐藏鼠标坐标。
代码如下(可以写在摄像头角色里):
5.接下来,我们来试着添加第二张地图,基地。
- 在背景角色中,添加“基地”地图的信息。由于还不确定边界值,先设置一个较大的边界,便于之后调整。
- 设置地图大小,可以根据自己的感觉调整:
- 接着,确定地图边界坐标。
- 运行游戏,按下空格键显示鼠标坐标;(这是前面写的代码)
- 例如鼠标放在地图左下角,可以确定左边界 x=-638,下边界 y = -357。类似的方法确定其他边界:
- 这样我们就确定了“基地”地图的边界坐标。
- 还可以设置这张地图的视野缩放。比如这里是 1,如果改成 0.5 就是拉远视野。(注,之前摄像头代码中有按“F”缩放视野的功能,可以先删除,避免干扰这里的根据不同地图设置视野缩放的代码)
- 那么“碰撞箱缩放系数”如何设置呢?
- 地图碰撞箱缩放是地图角色缩小到碰撞箱的缩放系数。
- 不同缩放系数对应碰撞箱造型大小如下图:缩小碰撞箱可以减少碰撞检测的计算量,但是太小可能导致碰撞检测不准确;太大会超出屏幕范围。一般选择左侧这样的大小就比较合适。
这样,我们就添加了一个新地图:基地。在载入地图时,设置地图名字来切换地图。
6.类似的,我们可以设置剩下两个地图的信息:城市、跨海大桥。我们还可以为玩家指定出生点:
a. 新建两个变量,记录玩家出生位置。
b. 然后玩家开始时移到出生点(需要先等待 0 秒,确保出生点坐标已设置好)
7.这样,我们就添加了 4 个不同的地图,通过开始时设置不同的地图名称来切换地图:
8.最后,可以把设置地图信息的代码做成自制积木,看起来会更清爽:
小练习:添加自己的地图
- 例如,绘制了下面的地图,取名为“草坪”。
- 接着,需要绘制名为“草坪t”的造型,作为遮挡图层:
- 在地图碰撞箱中,添加名为“草坪碰撞箱”的造型:
- 最后,给草坪地图添加信息。
- 然后,载入地图时,填写“草坪”,即可进入草坪地图!
<iframe
width="100%"
height="800px"
scrolling="no"
src="https://www.ccw.site/embed?id=STG202/Arkos/Lec3/03&type=comment"
title="{射击3-添加多个地图}"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowFullScreen
scrolling="0"
></iframe>