【问题标题】:Why are my tilemaps being drawn on top of everything?为什么我的瓦片地图被绘制在一切之上?
【发布时间】:2021-02-19 08:55:39
【问题描述】:

我正在尝试以编程方式将图块和对象添加到 2D 场景。我有一个层数较低的瓷砖地图和一个包含对象的层数较高的空游戏对象。

问题:

  1. 我的 Tilemap 总是在对象之上绘制。
  2. 我的对象按照我创建它们的顺序绘制(毫不奇怪)。但是,我希望将远离相机的物体绘制在靠近相机的物体后面。

网格中一个单元格的示例:

// Set tile for the tilegrid
Vector3Int tilePos = new Vector3Int(i, j, 0);
groundMap.SetTile(tilePos, groundTile);

// Place object as if it were standing on that tile cell
Vector3 objPos = new Vector3();
objPos.x = 1.0f*tilePos.x + 0.5f;
objPos.y = 1.0f*tilePos.y + 0.5f*objectHeight;
GameObject obj = GameObject.Instantiate(objectPrefab, objPos, Quaternion.identity) as GameObject;
obj.layer = objectParent.layer;
obj.transform.SetParent(objectParent.transform);

解决方案?

  1. 我真的不知道这个。我认为这些图层应该处理绘制顺序。当我运行项目时,对象的层数更高,但它们隐藏在网格后面。
  2. 我可以轻松地以相反的顺序绘制我的图块,但我不知道是否有其他方法可以做到这一点。我的播放器精灵要么完全绘制在对象之上或之下,我一直遇到同样的问题。但是,我希望当玩家在它后面时对象位于顶部,而玩家在它前面时它位于顶部。欢迎提出任何建议。

免责声明: 我是一名程序员,但对 Unity 还是很陌生。我倾向于在脚本中做尽可能多的事情,但我非常愿意了解更多关于 Unity 的原生工具。

【问题讨论】:

    标签: unity3d


    【解决方案1】:
    1. Layer != 排序层。渲染器上的排序层而不是游戏对象上的层实际上控制了在顶部绘制的内容。

    2. 编辑 > 项目设置 > 图形 > 相机设置 > 透明度排序模式 > 自定义轴 ... > 透明度排序轴 > (0, 1, 0)

    来源:https://answers.unity.com/questions/1098203/sorting-layers-according-to-y-axis.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-18
      • 1970-01-01
      • 1970-01-01
      • 2013-04-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多