广阔滚动引擎

广阔滚动引擎是一个用于维护广阔的滚动世界的项目引擎。假设一个世界中有大约300个滚动图块,用于大型开放世界游戏。如果同时存在所有300个克隆,由于脚本和渲染的过度使用,可能会导致严重的延迟。广阔滚动引擎通过只生成靠近当前位置的滚动图块来保持低处理能力。当滚动图块远离舞台时,引擎会自动删除它们。本教程将介绍如何开发和维护一个非常宽广的滚动世界。

准备工作

舞台布景排列

整个滚动世界只需要一个角色精灵,因为每个景观面板都是在一行中排列的克隆景观精灵,每个克隆精灵使用不同的造型。

第一个克隆精灵使用造型#1,右侧的第二个克隆精灵使用造型#2,以此类推。基本精灵中造型的排列顺序必须与从左到右移动的景观顺序相匹配,以便scrollx变量的值变化时,所有这些克隆精灵一起移动。

应创建一个变量scrollx来保存景观的x坐标。

定位景观面板克隆

为了在玩家移动到游戏的最左端或最右端时停止滚动,需要创建两个变量。

图1

这些变量保存了景观开始和结束的x坐标。

还需要创建另一个变量,以确定景观克隆是否离开了舞台的可见区域。

图2

现在需要设置初始值。

图3

移动景观面板克隆

在排列景观面板克隆时,需要捕获玩家的移动输入并用于更新之前创建的scrollx变量。

图4

注意,向左移动会增加scrollx的值,这样景观的滚动方向与玩家的移动方向相反。

列表的使用

在列表中,"1"表示当前生成的景观克隆精灵,"0"表示离舞台太远的不可见的克隆精灵。

需要创建一个列表来帮助组织景观面板克隆。

该列表用于控制当前可见和激活的面板,而不是不可见和不活动的面板。

在游戏的每一帧中,景观精灵检查scrollx变量,并确定需要显示的三个景观面板。如果scrollx变量的值为-480,那么克隆面板会使用造型1、2和3,因为每个造型的宽度为480像素。一旦scrollx达到-720的值,景观面板克隆将使用造型2、3和4。这意味着不再需要使用造型1的面板克隆,因为它在舞台上不可见。景观精灵使用clonesPresent列表来确定哪些面板克隆已经在舞台上,这就是为什么它不会删除使用造型2和3的克隆精灵。

应使用以下脚本正确初始化列表。

图5

在列表中,每个"0"表示在舞台上不可见的面板克隆,每个"1"表示在舞台上可见的面板克隆。创建一个面板克隆时,将其在列表中的值设置为"1",表示它是可见的。这样,景观精灵只为每个所需的景观造型创建一个面板克隆。

当一个克隆精灵离开舞台时,将其值重新设置为"0",因为它不再可见。

编程

以下脚本可用于将每个单独的面板克隆滚动,直到它在舞台上不再可见。

一旦面板克隆不再可见,就会被删除以节省内存。

平滑边缘滚动

通过在更改位置之前和之后对精灵进行缩放,需要使其平滑地从Scratch舞台上滚动出去。

图6

面板克隆的任务很简单,它随着scrollx的值移动,直到离开舞台太远,然后被删除以节省内存。创建克隆的景观精灵使用以下脚本检查并创建具有正确造型的新面板克隆。

图7

最后,景观精灵需要始终运行scrollengine

图8

标签: Scratch, Scratch编程, Scratch中国, 少儿编程, Scratch社区, Scratch编程社区, Scratch编程课程, Scratch编程教程