如何在网格中存储其他数据?

时间:2018-02-23 22:36:00

标签: c# unity3d blender

我正在为我的隐形游戏制作攀爬系统原型。我想标记一些边缘,以便玩家可以抓住它们,但我不知道如何接近它。我知道我可以添加单独的对撞机,但这看起来相当繁琐。相反,我想做的是在网格中标记边缘。这可以实现吗?怎么样?

2 个答案:

答案 0 :(得分:1)

您最好以可访问的格式在外部(即,正在运行的游戏中的其他地方而不是网格中)存储该边缘数据,也就是说,如果您确实想将其嵌入网格中…… / p>

  1. 像@ Draco18s一样,将元数据放入Mesh.colors或Mesh.uv2中。大多数着色器忽略其中一个或两个。当然,您将为面上的每个顶点复制边缘/面级别信息。

  2. 当玩家尝试“抓住”边缘时,进行碰撞测试,抓住脸部,抓住脸部上的任何顶点,然后查找边缘/脸部信息。

例如,您还可以将边缘元数据集合附加到附加到网格物体游戏对象的脚本中。只要您需要执行测试时就可以访问边缘集合,则将其存储在何处是实现细节。

答案 1 :(得分:-1)

如果您能够在网格物体中添加嵌套对象,则可以创建一个表示所需壁架和对撞机大小的基本框。在Unity中导入网格时,子网格对象将显示为具有自己的MeshRenderer的子gameObject。您可以为窗格禁用MeshRenderer并向其添加BoxCollider组件。对撞机将自动调整大小以匹配原始网格。

Blender Nested Objects example

Unity Nested Objects example