【发布时间】:2018-08-04 01:26:00
【问题描述】:
我正在为我的潜行游戏制作一个攀爬系统的原型。我想标记一些边缘,以便玩家可以抓住它们,但我不知道如何接近它。我知道我可以添加单独的对撞机,但这似乎很乏味。相反,我想做的是标记网格中的边缘。这可以实现吗?怎么样?
【问题讨论】:
-
有一种方法可以provide extra vertex data,但它是用于渲染的。我不知道它是否适合您的目的。
我正在为我的潜行游戏制作一个攀爬系统的原型。我想标记一些边缘,以便玩家可以抓住它们,但我不知道如何接近它。我知道我可以添加单独的对撞机,但这似乎很乏味。相反,我想做的是标记网格中的边缘。这可以实现吗?怎么样?
【问题讨论】:
您最好将边缘数据以可访问的格式存储在外部(也就是说,在您正在运行的游戏中的其他地方,而不是在网格中),也就是说,如果您真的想将其嵌入到网格中...
像@Draco18s 建议的那样,将元数据放入 Mesh.colors 或 Mesh.uv2 中。大多数着色器会忽略其中之一或两者。当然,您将为脸上的每个顶点复制边缘/面级别信息。
当玩家尝试“抓取”边缘时,运行碰撞测试,抓取面部,抓取面部上的任何顶点,并查看边缘/面部信息。
例如,您还可以将边缘元数据集合附加到附加到网格游戏对象的脚本中。只要您在需要执行测试时可以访问边缘集合,在哪里存储它就是一个实现细节。
【讨论】:
如果您能够在网格中添加嵌套对象,则可以创建一个原始框来表示所需的窗台和对撞机大小。当您在 Unity 中导入网格时,子网格对象将显示为具有自己的 MeshRenderer 的子游戏对象。您可以禁用窗台的 MeshRenderer 并向其添加 BoxCollider 组件。碰撞器将自动调整大小以匹配原始网格。
【讨论】: