,如何从具有多个网格的网格对撞机中获取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;
}
}
但肯定有更好的方法。
感谢。