首页 > 解决方案 > 如何在网格中对齐平铺游戏对象

问题描述

如何将平铺游戏对象与我的平铺地图网格对齐?我有以下设置:

tileSprite: 
  pixels per unit: 32
Grid (created tilemap gameobject):
  Grid component:
    cell size: 32, 32, 0
  GridController script component:
    tileSprite

在 GridController 脚本中:

public class GridController : MonoBehaviour {

    public Sprite tileSprite;

    // Use this for initialization
    void Start () {
        for (int x=0; x<5; x++) {
          for (int y=0; y<5; y++) {
            GameObject tile = new GameObject();
            tile.transform.localPosition = new Vector3(x, y, 0);
            tile.transform.localScale += new Vector3(32, 32, 1);

            SpriteRenderer tile_sr = tile.AddComponent<SpriteRenderer>();
            tile_sr.sprite = tileSprite;
          }
       }
    }
}

我希望它并排放置,但似乎它们仅相隔 1 个像素。IE。我希望 1 个单位等于 32 像素。

我该怎么做呢?非常感谢你的帮助!

我正在使用 Unity 2017.3.1f1。

标签: unity3d

解决方案


只需查看您的代码:

tile.transform.localPosition = new Vector3(x, y, 0);

您直接使用了循环的变量,但您需要计算放置瓷砖的位置。例如(可能不完全正确):

tile.transform.localPosition = new Vector3(x*32, y*32, 0);

推荐阅读