【问题标题】:How to invert sphere collider/ spherical mesh in unity 3d如何在统一 3d 中反转球体对撞机/球面网格
【发布时间】:2021-12-18 09:44:44
【问题描述】:

我需要统一反转球体对撞机,但我不够聪明,无法做到这一点。如果有人帮助我,将不胜感激。

【问题讨论】:

  • 请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。

标签: c# unity3d collider


【解决方案1】:

SphereCollider 本身是不可能的。

但您可以使用 MeshCollider 并为其分配 Sphere 网格。

然后您可以通过简单地反转所有三角形索引来反转所有法线,例如

// Linq provides handy shorthand queries and operations for IEnumerable collections
using System.Linq;

...

public MeshCollider meshCollider;

private void Awake ()
{
    if(!meshCollider) meshCollider = GetComponent<MeshCollider>();       

    var mesh = meshCollider.sharedMesh;

    // Reverse the triangles
    mesh.triangles = mesh.triangles.Reverse().ToArray();

    // also invert the normals
    mesh.normals = mesh.normals.Select(n => -n).ToArray();
}

【讨论】:

  • 当我尝试时它给了我一个错误,说 meshCollider 在您设置 var mesh 的行中没有网格定义
  • @ReidMonahan 是的,是在电话上输入的 ^^ 应该是 sharedMesh
  • 谢谢你
猜你喜欢
  • 1970-01-01
  • 2020-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多