我有一个精灵表,里面有一个等距精灵,它是一个基本的等距立方体,我想正确渲染,但无法找到方法
尝试了不同的方法来计算 x 和 y 以转换为等距坐标系
public void render() {
for (int xScreen = 0; xScreen < width; xScreen++) {
for (int yScreen = 0; yScreen < height; yScreen++) {
pixels[xScreen + yScreen * width] = Sprite.tile.pixels[(xScreen & 31) + (yScreen & 31) * Sprite.tile.SIZE];
}
}
}
}
您附加的图像显示了一个 3 维世界(它有 X、Y 和 Z 坐标)。您正在尝试将其渲染到 2D 屏幕,因此 3D 世界中的多个位置将映射到相同的屏幕坐标。
我强烈建议您从 2D 世界开始(删除垂直组件),以便 2D 世界中的每个位置都映射到唯一的屏幕坐标。您可能还想使用一些方格纸来可视化如何进行映射 - 这听起来很愚蠢,但用纸绘制它的行为可以帮助您明确思维。
一旦您能够成功渲染 2D 世界,就可以尝试渲染 3D 世界。注意:计算块为何遮挡其他块(特别是当它们具有非标准形状时)比处理平坦的 2D 世界要困难得多。