如果做刀剑类的游戏则会涉及到网格的切割
推荐一个网格切割插件
EzySlice
用这个插件可以很方便的切割网格
但是有一个问题,对应用了SkinnedMeshRenderer的模型无法切割
解决方法:
1.将SkinnedMeshRenderer中的网格烘焙,这是我们会得到一个mesh
2.我们在模型的位置创建一个空物体,添加上MeshRenderer和MeshFilter组件,然后将所得的mesh和原模型的材质给这个新物体
3.将原物体隐藏
这样当我们要切割的时候创建一个新物体来切割,将原物体隐藏,效果看起来就像是将SkinnedMeshRenderer切割了一样
实例代码
public GameObject CreateStaticMesh()
{
Mesh staticMesh = new Mesh();
GameObject goNewMesh = new GameObject();
skinnedMesh.BakeMesh(staticMesh);
goNewMesh.transform.position = skinnedMesh.transform.position;
goNewMesh.AddComponent<MeshFilter>().sharedMesh = staticMesh;
goNewMesh.AddComponent<MeshRenderer>().sharedMaterial = skinnedMesh.material;
goNewMesh.AddComponent<Rigidbody>().useGravity = true;
goNewMesh.AddComponent<BoxCollider>();
gameObject.SetActive(false);
return goNewMesh;
}