Mat*_*ian 8 c# math geometry unity-game-engine
我正在尝试制作一个球形爆发射线以检查碰撞,但是根据每条射线撞击的内容或位置发生特定的相互作用.因此,为什么我使用光线而不是更简单的东西,如OverlapSphere.
我正在寻找如何制作球体的原因是因为我可以使用相同的数学计算我的光线,让它们到达球体所在的顶点.但是我能找到制作球体的每一种方式都会让线条越来越接近极点,这很有意义,因为它很容易做到.但是你可以想象,它对我当前的项目没那么有用.
TL; DR: 如何制作具有等距顶点的球体?如果它的罚款不完全等距,它只需要非常接近.如果发生这种情况,如果你可以给出差异的多少,以及在哪里,如果适用,那将是很好的.
你是否意识到Unity给你的球体实际上是设计的
也就是说,内置于Unity的球体的整个存在理由是这些点是相当平滑的空间......大致等距,正如你所说的那样.
要在Unity中创建这样的球体,只需执行以下操作:
如您所知,您可以立即访问顶点
Mesh mesh = GetComponent<MeshFilter>().mesh;
Vector3[] vv = mesh.vertices;
int kVerts=vv.Length
for (int i=0; i<kVerts; ++i)
Debug.Log ... vv[i]
Run Code Online (Sandbox Code Playgroud)
请注意,您可以轻松检查它们所在的"球体的哪个部分"(例如)检查它们与"城市"(或其他)的距离,或者只检查(例如)z值以查看它们是哪个半球在..等等.
请注意.关于你想要这样做的总体原因:
但是根据每条射线命中的位置或位置发生特定的相互作用
请注意,使用PhysX执行此操作并不容易.(Unity中完全内置的游戏物理.)事实上,我从来没有看过碰撞而没有根据"击中的地方"做某些"具体"的事情.
例如,您可以获得联系人所在的位置http://docs.unity3d.com/ScriptReference/RaycastHit-point.html
值得注意的是,在休闲编程中可以写出接近PhysX性能的东西是绝对不可思议的.
我希望这会让事情变得更容易!