C# 爬升系统的网格边缘检测
我正在做一个虚拟现实游戏,里面有一些攀岩技巧。玩家将能够抓取边缘,我希望使用动态边缘检测,而不是我现在正在做的,在我希望玩家能够抓取的边缘上放置碰撞器。这样做需要很长时间,并且不允许任何程序网格生成C# 爬升系统的网格边缘检测,c#,unity3d,virtual-reality,C#,Unity3d,Virtual Reality,我正在做一个虚拟现实游戏,里面有一些攀岩技巧。玩家将能够抓取边缘,我希望使用动态边缘检测,而不是我现在正在做的,在我希望玩家能够抓取的边缘上放置碰撞器。这样做需要很长时间,并且不允许任何程序网格生成 我知道这样的事情可以通过着色器实现,但是因为它们不返回任何数据,所以这不是一个选项。我还有别的办法吗?即使是一种在网格中标记边而不是使用碰撞器的方法也很好。下面是我将如何做的。这是一种固执己见的做法,不一定是最佳做法。您的里程可能会有所不同 忘记对撞机,除非你的水平很小。这里太贵了。我喜欢使用碰撞器
我知道这样的事情可以通过着色器实现,但是因为它们不返回任何数据,所以这不是一个选项。我还有别的办法吗?即使是一种在网格中标记边而不是使用碰撞器的方法也很好。下面是我将如何做的。这是一种固执己见的做法,不一定是最佳做法。您的里程可能会有所不同
在这个系统下,攀岩本质上是一个小型平台。手必须从一个平台“跳跃”到另一个平台,以实现进一步的垂直运动。我将这样做。这是一种固执己见的做法,不一定是最佳做法。您的里程可能会有所不同
在这个系统下,攀岩本质上是一个小型平台。手必须从一个平台“跳跃”到另一个平台,以实现进一步的垂直移动。您是否可以使用
Mesh.bounds
然后在编辑器中选择您想要攀爬的边?@jiveturkey我不明白Mesh.bounds在这里有什么帮助。它只是实际模型周围的一个框。您正在尝试确定网格的边?是的,我希望能够管理它们,例如使用水平边。您希望在运行时特别标识可爬升边吗?在构建时没有安装工作?你的世界几何体有多规则(例如,Minecraft风格或更逼真/不规则的3D)?你是否可以使用Mesh.bounds
,然后在编辑器中选择你想要攀爬的边?@jiveturkey我不明白Mesh.bounds在这里有什么帮助。它只是实际模型周围的一个框。您正在尝试确定网格的边?是的,我希望能够管理它们,例如使用水平边。您希望在运行时特别标识可爬升边吗?在构建时没有安装工作?你的世界几何结构有多规则(例如,Minecraft风格或更真实/不规则的3D)?“grabbable”指的是任何类似于壁架的东西,其中一个面是平的,另一个面是成角度的(理想情况下,我可以定义角度范围)。你知道有什么算法可以帮我找到这样的边吗?我想我自己可以弄清楚,但是如果有人已经做了,那就太好了。在最简单的情况下,两个面沿着一条边相邻,你可以从面法线得到每个面的方向,并进行比较。在最复杂的情况下——一个真实世界可抓取几何体的不规则三维凹面或凸面部分,尽管我在上面说过,碰撞机可能是最好的,因为任意3D形状检测的算法复杂。但如果可能的话,我会根据需要创建对撞机,因为化身接近或试图抓取几何体。最佳解决方案将取决于您对世界几何的“特殊知识”。例如,如果您作为世界创建者,知道所有可抓取边都将具有向上指向的面(法线(0,1,0))和垂直向外指向的面法线,这将简化问题。或者,如果你知道你需要不规则的几何体,也许你可以接受一系列的法线,因为它们都大致指向“向上”,允许你的真实世界的几何体带有轻微的斜面和坡度等。你也可以使用混合的方法:“干净边”的线平面交点和时髦几何体的碰撞器我指的是任何类似led的东西