2d统一级发生器实例化错误位置

时间:2017-07-28 20:34:36

标签: c# unity3d 2d

我一直在尝试制作自己的关卡生成器,它根据我制作的小地图中的颜色生成一个带有正确精灵的预制件。

更具体地说,我制作了这张小地图。

enter image description here

如果其中一种颜色与颜色数组中找到的颜色之一匹配,它将使用正确的精灵实例化预制件,依此类推其他颜色。到目前为止,它使用正确的sprite实例化对象。

然而,这就是我玩游戏时的样子。

enter image description here

这就是它的假设

enter image description here

我不知道为什么会这样做,因为根据我的代码,

public Texture2D needColors;
public Texture2D tiles;
public Texture2D level;
public GameObject tile;
public Transform parent;
public Color32[] colors;
public Sprite[] sprites;

void Start(){
    for(int x = 0; x < level.width; x++){
        for(int y = 0; y < level.height; y++){
            GenerateLevel(x, y);
        }
    }
}

void GenerateLevel(int x, int y){
    Color32 pixelColor = level.GetPixel(x, y);
    if(pixelColor.a == 0){
        return;
    }
    for(int i = 0; i < colors.Length; i++){
        if(pixelColor.Equals(colors[i])){
            Vector2 position = new Vector2(x, y);
            Instantiate(tile, position, Quaternion.identity, parent);
            tile.GetComponent<SpriteRenderer>().sprite = sprites[i];
        }
    }
}

应该跳过透明像素。

我真的很感激这个问题的解决方案,我想我还应该提一下,我已经使用了一段时间的团结,但我没​​有经验丰富,所以如果有人能提供详细的答案,那么我就能理解问题是什么,我真的很感激。谢谢你提前。

0 个答案:

没有答案