我有一个大的形状,用作角色移动时移动的巨型地图(角色始终保持在舞台中央)。
现在由于地图很大,我想将地图切割成只有在舞台区域内时才会显示的图块。
我的问题是,是否有一种聪明的方法可以将地图切割成相同大小的小图块,还是我需要自己选择每个图块?
形状/地图位于符号内。问题是地图太大而无法制作动画,因此为了提高性能,我只想显示当前在 x=0 和 x = 780 之间以及 y=0 和 y=400 之间的图块。
提前致谢。
我有一个大的形状,用作角色移动时移动的巨型地图(角色始终保持在舞台中央)。
现在由于地图很大,我想将地图切割成只有在舞台区域内时才会显示的图块。
我的问题是,是否有一种聪明的方法可以将地图切割成相同大小的小图块,还是我需要自己选择每个图块?
形状/地图位于符号内。问题是地图太大而无法制作动画,因此为了提高性能,我只想显示当前在 x=0 和 x = 780 之间以及 y=0 和 y=400 之间的图块。
提前致谢。
优先级 #1 绝对不为屏幕外的内容创建图形对象。为游戏目的创建所有数据和所有内容,但不要将每个图块与图形对象相关联。只创建足够的图形对象来表示任何特定时刻屏幕上的内容,并将它们与开始时屏幕上的内容相关联;然后当玩家移动时,只需更改这些图形对象与哪些游戏图块相关联。这将防止您耗尽内存并快速执行其他类似操作。
您似乎在暗示游戏地图在逻辑上被划分为图块。在这种情况下,您可以执行以下操作:
var x:int = 0;
var y:int = 0;
for (var i:int = firstColumnInFocus; i < firstColumnInFocus + widthRange - 1; i++)
{
for (var j:int = firstRowInFocus; j < firstRowInFocus + heightRange - 1; j++)
{
tileGraphics[x][y].tile = level.tiles[i][j];
y++;
}
x++;
}
至于为实际游戏数据结构和内容创建逻辑图块,只需创建一个包含您需要的任何内容的图块或空间对象的 2D 数组,并确保数组中元素的位置代表它们的地理位置。
我不完全确定这是否是你在说的。在某些方面,这听起来像是您在谈论已经设计为瓷砖集合的关卡,而在其他方面,听起来您是在谈论采用单个精灵并简单地使用瓷砖来估计多少它应该在屏幕上。在我个人看来,您或多或少都在做两者,但您的策略可能应该在某种程度上取决于实际发生的情况。