目前,我们还没有设置边界,玩家可以随意的走出边界,并且会露出地图背后的白色舞台:
地图边界:
为了解决这个问题,我们来为地图添加边界:
- 首先,新建四个变量,用于存放地图的上下边界 y 坐标、左右边界 x 坐标:
- 接着,我们需要确定边界的坐标值:
- 新建两个变量,鼠标 x,鼠标 y。这两个变量用于存放鼠标对应的地图坐标。
- 接着,在摄像头中,添加下面的代码,计算鼠标对应的地图坐标:
- 然后,我们来到地图右下,将鼠标放在地图右下角,确定了地图右边界:920,以及地图下边界:-440
- 这样,我们就确定了地图的 4 个边界的坐标。在背景角色中,设置地图的边界:
注:前面的#号为作者个人命名习惯,表示这个变量是个不常修改的常量
勾选显示变量,因为待会我们将通过查看鼠标坐标来确定地图边界坐标。
(前面提到过,舞台中心对准的地图坐标,就是摄像头坐标。因此摄像头坐标+鼠标的舞台坐标,得到的就是鼠标此时对应的地图坐标)
这样,我们就可以查看鼠标位置对应的地图坐标:
这样,通过将鼠标放在地图左上角,我们确定了地图的左边界:-993,以及地图的上边界:361
限制玩家:
5. 接下来,我们将玩家的移动范围限制在地图内:
在玩家角色中新建自制积木“限制在地图内”,并编写如下代码:
下面的代码实现的功能:当玩家 x < 地图左边界 x,将玩家 x 设置回左边界 x,以避免超出边界;其他边界同理。
这样,我们可怜的玩家就被困在了地图内:
- 同样,可以将代码复制到敌人中,让敌人也无法移到地图外:
限制摄像机视野
- 最后,我们限制摄像机视野,当达到地图边缘时,不再让摄像机靠近边缘,避免显示出地图背后的白色舞台。
为摄像机添加如下代码:
其中,320 是舞台半宽(如果你是用的是原版 Scratch,则是 240),180 是舞台的半高。当摄像头坐标<地图左边界+320,说明舞台的左侧已经移出了地图的左边界,需要限制回来,避免露出地图外面的部分。其他方向同理。
这样,视野就会被始终限制在地图内:
很棒!
<iframe
width="100%"
height="800px"
scrolling="no"
src="https://www.ccw.site/embed?id=STG202/Arkos/Lec2/01&type=comment"
title="{射击2-为地图添加边界}"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowFullScreen
scrolling="0"
></iframe>