gpt4 book ai didi

c# - 不同尺寸的等距图 block 无法正确呈现

转载 作者:太空宇宙 更新时间:2023-11-03 15:38:01 24 4
gpt4 key购买 nike

我正在使用 Unity 5 创建等距游戏。我生成了一个瓷砖网格,效果很好。但是,当我使用两个不同的图 block 填充网格时(它们的图像尺寸略有不同),图 block 之间会出现间隙。显而易见的解决方案是创建图 block ,使它们的图像大小都相同,但这会阻止我在图 block 上创建任何大于图 block 大小的东西(例如树)。

这里有一些图片来演示:

只有一种瓷砖:enter image description here

有两种瓷砖:enter image description here

这是我用来创建 map 的代码:

private void CreateMap() {

float tileWidth;
float tileHeight;

int orderInLayer = 0;

SpriteRenderer r = floorTiles [0].GetComponent<SpriteRenderer> ();

tileWidth = r.bounds.max.x - r.bounds.min.x;
tileHeight = r.bounds.max.y - r.bounds.min.y;

for (int i = 0; i < map.GetLength(0); i++) {
orderInLayer += 1;
for (int j = 0; j < map.GetLength (1); j++) {
Vector2 position = new Vector2 ((j * tileWidth / 2) + (i * tileWidth / 2) + (tileWidth / 2), (j * tileHeight / 2) - (i * tileHeight / 2) + (tileHeight/ 2));
r = map[i,j].GetComponent<SpriteRenderer>();
r.sortingOrder = orderInLayer;
Instantiate(map[i, j], position, Quaternion.identity);

}
}

}

任何帮助将不胜感激,我似乎无法修复它!

最佳答案

您似乎在每次创建瓷砖时都从头开始计算每个瓷砖的位置。如果您有 2 个不同大小的瓷砖,那么您的计算结果会有所不同,因此您的瓷砖中会有间隙。这是因为您只使用了当前图 block 的宽度/高度,而没有考虑到任何先前可能具有更短/更长高度/宽度的图 block 。

鉴于您有不同的高度和宽度,您需要一种方法来计算两者的正确位置,以防止在 X 和 Y 方向上出现间隙。我在这里模拟了一些东西,但未经测试。我想更多的是一个概念(?)。

float tileHeight = 0;
float tileWidth = 0;

Vector2 position = new Vector2(0,0);

Dictionary<int, float> HeightMap = new Dictionary<int, float>();

for (int iRow = 0; iRow < map.GetLength(0); iRow++)
{
position.x = 0;
orderInLayer += 1;

for (int jColumn = 0; jColumn < map.GetLength (1); jColumn++)
{
position.y = HeightMap[jColumn];

r = map[iRow, jColumn].GetComponent<SpriteRenderer>();

tileWidth = r.bounds.max.x - r.bounds.min.x;
tileHeight = r.bounds.max.y - r.bounds.min.y;
r.sortingOrder = orderInLayer;

position.x += tileWidth / 2;

position.y += tileHeight / 2;

Instantiate(map[iRow, jColumn], position, Quaternion.identity);

HeightMap[jColumn] = position.y;
}
}

我将存储高度或实例化 HeightMap 字典内容的最佳方式留给您认为合适的方式。

关于c# - 不同尺寸的等距图 block 无法正确呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31147355/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com