【问题标题】:Unity3D C#: Drawing border of a hexagonUnity3D C#:绘制六边形的边框
【发布时间】:2014-11-17 01:39:37
【问题描述】:

我对 Unity 或 C# 甚至任何 GUI 连接都相当陌生,但我试图制作一个简单的六边形网格,我遵循了本教程:http://forum.unity3d.com/threads/procedural-hexagon-terrain-tutorial.233296/,它创建了很好的六边形块。现在的事情是我想为每个十六进制做一个边界。我尝试使用 ToonShader,但它似乎不适用于这种结构。我还尝试在每个十六进制中创建一个 LineRenderer,包含它的边缘点的坐标,但经过一些潜伏后,我意识到我可能应该为每个十六进制使用 6 个 LineRenderer。我的问题来了,使用这么多 LineRenderer 有意义吗?有没有更方便(我确定有)或更漂亮的方法来做到这一点? 提前致谢。

【问题讨论】:

  • 在平铺图形中画出轮廓

标签: c# unity3d


【解决方案1】:

LineRenderer 支持多条线,:) 所以每个十六进制只需要 1 个 LineRenderer。你可以这样做:

LineRenderer lineRenderer = ... ; // Add or get LineRenderer component to game object
lineRenderer.SetVertexCount(7);  // 6+1 since vertex 6 has to connect to vertex 1
for (int i = 0; i < 7; i++) {
    Vector3 pos = ... ; // Positions of hex vertices
    lineRenderer.SetPosition(i, pos);
}

虽然这可能不是很有效,具体取决于您拥有多少瓷砖。如果你有很多,但不是太多,你可以为所有瓦片创建一个 LineRenderer。如果你真的有很多,那么将地图细分为包含 X x Y 瓦片的区域,并为每个区域生成一个 LineRenderer。另请注意,如果您使用这些方法,相邻的六边形可以共享线。

【讨论】:

    【解决方案2】:

    如果您不介意花费大约 20 美元,Vectrosity 是一个不错的 Unity 插件,可以让您画线。我在使用 Unity 制作的图形绘制应用程序中使用它来绘制节点之间的顶点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-21
      • 1970-01-01
      • 1970-01-01
      • 2021-04-19
      • 2013-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多