private void OnTriggerEnter(Collider other) { if (other.name == "PlayerHeadCollision" && sawblade.IsSpinning()) { playerdeathHandler.KillPlayer("death_sawblade"); } else if (other.name == "Bomb" && sawblade.IsSpinning()) { FindObjectOfType <Bomb>().TimerTimeOut(); } }
private void OnCollisionEnter(Collision collision) { if (transform.gameObject.name == "polySurface3157") { if (!sawBlade.IsSpinning()) { return; } if (collision.gameObject.tag == "Band") { newHandleObjects = new List <GameObject>(); collision.gameObject.tag = "Untagged"; originalHandleParent = collision.gameObject.transform.parent.gameObject; grabHandle = collision.transform.GetChild(0).gameObject; ContactPoint contact = collision.contacts[0]; newHandleObjects.AddRange(CutMesh(collision.gameObject, contact.point, transform.right, collision.gameObject.GetComponent <Renderer>().material, true)); for (int i = 0; i < newHandleObjects.Count; ++i) { newHandleObjects[i].gameObject.tag = "Untagged"; newHandleObjects[i].transform.parent = originalHandleParent.transform.root; Destroy(newHandleObjects[i].GetComponent <MeshCollider>()); newHandleObjects[i].AddComponent <BoxCollider>(); } RaycastHit hit; Physics.Raycast(originalHandleParent.transform.position, Vector3.down, out hit); UpperPart = hit.collider.gameObject.name; if (UpperPart == newHandleObjects[0].name) { newHandleObjects[0].transform.parent = originalHandleParent.transform; } else { newHandleObjects[0].layer = LayerMask.NameToLayer("Default"); newHandleObjects[0].AddComponent <Rigidbody>(); grabHandle.GetComponent <ConfigurableJoint>().connectedBody = newHandleObjects[0].GetComponent <Rigidbody>(); grabHandle.transform.parent = newHandleObjects[0].transform; grabHandle.AddComponent <Ball>(); Destroy(newHandleObjects[0].GetComponent <ConfigurableJoint>()); } if (UpperPart == newHandleObjects[1].name) { newHandleObjects[1].transform.parent = originalHandleParent.transform; } else { newHandleObjects[1].layer = LayerMask.NameToLayer("Default"); newHandleObjects[1].AddComponent <Rigidbody>(); grabHandle.GetComponent <ConfigurableJoint>().connectedBody = newHandleObjects[1].GetComponent <Rigidbody>(); grabHandle.transform.parent = newHandleObjects[1].transform; grabHandle.AddComponent <Ball>(); Destroy(newHandleObjects[1].GetComponent <ConfigurableJoint>()); } } } else if (transform.gameObject.tag == "GlassFragment") { var controller = PlayerViveController.GetControllerThatHolds(transform.gameObject); // Check if player is holding the glass and a piece hasn't just randomly landed on the wire collider if (controller != null && controller.gameObject.GetComponent <SteamVR_Behaviour_Pose>().GetVelocity().magnitude >= heldCutForce) { if (collision.gameObject.tag == "Wire") { collision.gameObject.tag = "Untagged"; ContactPoint contact = collision.contacts[0]; newHandleObjects.AddRange(CutMesh(collision.gameObject, contact.point, transform.right, collision.gameObject.GetComponent <Renderer>().material, false)); newHandleObjects[0].tag = "Untagged"; newHandleObjects[1].tag = "Untagged"; } else if (collision.gameObject.tag == "Band") { newHandleObjects = new List <GameObject>(); collision.gameObject.tag = "Untagged"; originalHandleParent = collision.gameObject.transform.parent.gameObject; grabHandle = collision.transform.GetChild(0).gameObject; ContactPoint contact = collision.contacts[0]; newHandleObjects.AddRange(CutMesh(collision.gameObject, contact.point, transform.right, collision.gameObject.GetComponent <Renderer>().material, true)); for (int i = 0; i < newHandleObjects.Count; ++i) { newHandleObjects[i].gameObject.tag = "Untagged"; newHandleObjects[i].transform.parent = originalHandleParent.transform.root; Destroy(newHandleObjects[i].GetComponent <MeshCollider>()); newHandleObjects[i].AddComponent <BoxCollider>(); } RaycastHit hit; Physics.Raycast(originalHandleParent.transform.position, Vector3.down, out hit); UpperPart = hit.collider.gameObject.name; if (UpperPart == newHandleObjects[0].name) { newHandleObjects[0].transform.parent = originalHandleParent.transform; } else { newHandleObjects[0].layer = LayerMask.NameToLayer("Default"); newHandleObjects[0].AddComponent <Rigidbody>(); grabHandle.GetComponent <ConfigurableJoint>().connectedBody = newHandleObjects[0].GetComponent <Rigidbody>(); grabHandle.transform.parent = newHandleObjects[0].transform; grabHandle.AddComponent <Ball>(); Destroy(newHandleObjects[0].GetComponent <ConfigurableJoint>()); } if (UpperPart == newHandleObjects[1].name) { newHandleObjects[1].transform.parent = originalHandleParent.transform; } else { newHandleObjects[1].layer = LayerMask.NameToLayer("Default"); newHandleObjects[1].AddComponent <Rigidbody>(); grabHandle.GetComponent <ConfigurableJoint>().connectedBody = newHandleObjects[1].GetComponent <Rigidbody>(); grabHandle.transform.parent = newHandleObjects[1].transform; grabHandle.AddComponent <Ball>(); Destroy(newHandleObjects[1].GetComponent <ConfigurableJoint>()); } } } } }