将坐标转换为阵列中的块位置

Converting Coordinates To Block Position In Array

本文关键字:位置 阵列 坐标 转换      更新时间:2023-09-26

所以我有一个等距映射(但它也可以是2D映射)和一个int[]数组来存储该映射上的所有块ID。

阵列看起来像这样(对于4乘4的块图):

0 0 1 0 0 2 0 1 0 2 1 0 1 0 3 2

这将在地图上转化为这个(第一个正方形):

0 0 1 0    0 0 1 0
0 2 0 1    0 2 X 1
0 2 1 0    0 2 1 0
1 0 3 2    1 0 3 2

第二个正方形上有一个X。

如何计算X在数组中的位置?我试着做基本的乘法:index = fieldWidth + fieldHeight,但我做不到。

另外,如何使用X在数组中的位置来计算X的坐标?

这可能对任何制作2D/等轴测游戏的人都有用。

当位置为零(=以0开头)时:

index = horizontalPos + verticalPos * 4

如果它以1开始使用:

index = horizontalPos - 1 + (verticalPos - 1) * 4

获取线性阵列中索引为i的X的从零开始的位置:

verticalPos = parseInt(i / 4); horizontalPos = i % 4;

编辑:

要使其通用,请将4替换为地图的列数