无法从对撞机获取网格

时间:2014-03-15 03:13:33

标签: unity3d mesh raycasting

Unity中的

,如何从具有多个网格的网格对撞机中获取sharedMesh?

我有一个模型,我添加了多个网格对撞机。想象一下有几个可以定位的弱点的坦克。

当我对这些弱点进行光线投射时,我确实获得了点击信息,但是当我尝试获取被击中的特定网格的名称时,我不能:

mesh_name = hit_info.collider.sharedMesh.name;

给了我这个编译错误:

'UnityEngine.Collider'不包含'sharedMesh'的定义,并且没有扩展方法'sharedMesh'可以找到接受类型'UnityEngine.Collider'的第一个参数(你是否缺少using指令或者装配参考?)

即使sharedMesh存在,我甚至可以看到它在Watch窗口中显示正确的网格!

如果我遍历此模型中的所有网格对撞机并将其与一次点击进行比较,我可以找到它:

MeshCollider[] meshes = hit_info.collider.GetComponentsInChildren<MeshCollider>();
for ( int i = 0; i < meshes.Length; i++ )
{
    if ( meshes[ i ] == last_hit_info.collider )
    {
        // found the mesh
        mesh_name = meshes[ i ].sharedMesh.name;
        break;
    }
}

但肯定有更好的方法。

感谢。

0 个答案:

没有答案