In unity 4.6 and below I have used the wheel collider in a game called Monster Truck Mayhem and I have had the ability to trigger OnCollisionEnter events on objects the wheel hits. An example is crushing cars with wheels. I am working on a update to 5.3 because I want to have this on Apple TV. Has anyone else noticed this? Is there an explanation for why this is working the way it is now? Here is my code attached to the crush car Code (JavaScript): //Crushed car model var bad : GameObject; function OnCollisionEnter (hit : Collision) { if(hit.transform.root.name == "Truck 1" || hit.transform.root.name == "CPU"){ bad.SetActive(true); //Tells scoring a car was crushed hit.gameObject.SendMessage("Crush", SendMessageOptions.DontRequireReceiver); gameObject.SetActive(false); } } Thanks
****EDIT**** So as a solution I have added mesh colliders and made them triggers and changed the collision scripts to look for trigger events and is working so far.
I needed the same for my landing gear...try these on for size?? Code (CSharp): if (wheelLeft.GetGroundHit(out leftWheelhit)) { //Debug.Log("leftWheelhit.forwardSlip: " + leftWheelhit.forwardSlip); if ((leftWheelhit.forwardSlip > 0.1f) && (WheelOnHit.Length > 0) && (takeWheelHit)) { Transform sound = PoolBoss.SpawnOutsidePool(WheelOnHit[Random.Range(0, WheelOnHit.Length)], leftWheelhit.point, leftWheelhit.collider.transform.rotation); } if ((leftWheelhit.forwardSlip > 0.1f) && (WheelEffects.Length > 0) && (takeWheelHit)) { //Debug.Log("WheelHit: DAMAGE!! " + takeWheelHit); foreach (Transform Effect in WheelEffects) { Transform effect = PoolBoss.SpawnOutsidePool(Effect, leftWheelhit.point, leftWheelhit.collider.transform.rotation); } } } if (wheelRight.GetGroundHit(out rightWheelhit)) { if ((rightWheelhit.forwardSlip > 0.1f) && (WheelOnHit.Length > 0) && (takeWheelHit)) { Transform sound = PoolBoss.SpawnOutsidePool(WheelOnHit[Random.Range(0, WheelOnHit.Length)], leftWheelhit.point, leftWheelhit.collider.transform.rotation); } if ((rightWheelhit.forwardSlip > 0.11f) && (WheelEffects.Length > 0) && (takeWheelHit)) { //Debug.Log("WheelHit: DAMAGE!! " + takeWheelHit); foreach (Transform Effect in WheelEffects) { Transform effect = PoolBoss.SpawnOutsidePool(Effect, leftWheelhit.point, leftWheelhit.collider.transform.rotation); } } } if ((wheelLeft.isGrounded) && (wheelRight.isGrounded)) { grounded = true; playerUI.ChangeView0_Mode(true); //flight.CamCollider(true); //Debug.Log("grounded---->>" + leftWheelhit.force); if ((!hasParent) && (leftWheelhit.collider.gameObject.name == CarrierCollider)) { CarrierLanding(); } } else { grounded = false; //Debug.Log("Airborne---->>"); if (hasParent) { transform.parent = null; hasParent = false; } if(mission) StartCoroutine(mission.SetRefuelActive(true)); } } Patrick
Thank you for this. I have taken a look at it and will attempt to implement something like it this week.