什么是平铺地图以及如何声明

what is a tiled map and how it is declared

本文关键字:何声明 声明 地图 什么      更新时间:2023-09-26

我最近在搜索游戏编程,我通过了一个名为Tiled Map的定义。我查找了它,试图了解它是如何声明的,以及它是如何用于查找冲突的,但没有成功,任何人都不能给我一个清楚的解释,说明什么是Tiled Map,它是声明的,我如何在这个地图中检测到冲突。这是我阅读的网站:

http://rodrigo-silveira.com/html5-2d-game-programming-tutorial-gwt/#.Uf9Ivm22shC
var mapBluePrint = [
  [0, 0, 0, 0, 0, 0],
  [0, 8, 8, 8, 8, 0],
  [0, 0, 0, 0, 0, 0]
  ];

Wikipedia将瓦片映射(也称为瓦片集)定义为:

瓦片集(有时称为精灵表)是称为瓦片(通常大小一致)的较小图像的集合,这些图像已组合成单个较大的图像。平铺集通常用于2D视频游戏中,用于从集内可重复使用的平铺创建复杂的地图。当显示基于瓦片集的地图时,存储在其中的瓦片用于重新组合地图以进行显示。

平铺贴图是通过将游戏划分为正方形网格来创建的。然后,每个单元格都可以填充一个由更小、均匀的图像组成的图像中的"瓦片"(例如文章中提供的马里奥图像)。然后,使用2D阵列(有时是单个阵列)来存储数字列表,每个数字对应于图像中的特定瓦片。使用数组非常好,因为它可以跟踪单元格的行和列。在您的示例中,数字0通常对应于一个空瓦片(主要是因为它可以更容易地检查碰撞),而数字8则对应于较大图像的某些部分,可能是云或砖块。

制作基于瓦片的游戏时,通常会创建一个或多个数组来保存地图的瓦片信息,另一个数组则保存冲突发生地的信息。当您检查冲突时,您只需通过检查数字的存在来检查用户试图输入的单元格是否为空。例如:

function checkCollision(userRow, userCol) {
   if (collisionMap[userRow][userCol]) {
      // cell is not empty, handle collision
   }
   else {
      // cell is empty, carry on
   }
}

你可以从我写的这篇文章中阅读另一个关于瓦片映射的资源。

Tiled是一个通用的tile地图编辑器。它是一个免费的工具,可以方便地创建地图布局。它的通用性足以指定更抽象的东西,如碰撞区域、敌人产卵位置或加电位置。它以方便、标准化的tmx格式保存所有这些数据。

使用Tiled创建地图的设计过程的核心是遵循以下步骤:选择地图大小和基本平铺大小。添加图像中的瓷砖集。将波浪形符号放在地图上。添加任何其他对象来表示抽象的东西。将映射另存为tmx文件。导入tmx文件并为您的游戏解释它。