private void OnTriggerExit(Collider other) { if (Fail) { if (storage.Player.transform.parent != transform.parent) { return; } storage.Player.transform.SetParent(transform.parent.parent.parent); storage.PlayerStat.IsGrounded = false; storage.PlayerStat.stat = VStat.Falling; return; } storage.PresentFall.Value.transform.SetParent(transform); storage.PresentFall.Value.transform.localPosition = Vector3.zero; FallingPart = storage.PresentFall.Value; FallFilter = storage.PresentInfo.Value.FallFilter; FallCollider = storage.PresentInfo.Value.FallCollider; storage.RenewFall(); var Slide = (other.transform.position - transform.position); //这里要分两种情况,垂直X的和垂直Z的 先写了垂直Z的 if (other.transform.parent.localRotation.eulerAngles.y == 90f) { OnCutZ(Slide); storage.RenewMesh(CompareMeshParaZ(MeshA, MeshB), StayMesh.mesh); } else { OnCutX(Slide); storage.RenewMesh(CompareMeshParaX(MeshA, MeshB), StayMesh.mesh); } FallFilter.mesh = FallMesh; FallCollider.sharedMesh = FallMesh; FallCollider.convex = true; FallingPart.SetActive(true); StartCoroutine(FallRecycle(FallingPart)); //激活这个子物体,几秒后再关掉 //关掉的时间应该小于第二次碰到激光的时间 //或者建立第三个对象池用于存储fallingparts? storage.RenewMesh(StayMesh.mesh, MeshA); storage.RenewMesh(StayMesh.mesh, MeshB); StayMeshCollider.sharedMesh = StayMesh.mesh; StartCoroutine(EleRecycle()); }