void OnCollisionExit(Collision collision) { Ground exitGround = groundCollection.Find(ground => ground.collider == collision.collider); if (exitGround != null) { if (exitGround.collider.GetComponent <MovingPlataform> ()) { currentPlatform = null; } persistence = Vector3.Dot(exitGround.contactNormal, Vector3.up) < 1 && verticalSpeed <= 0; groundCollection.Remove(exitGround); StartCoroutine(RecheckPersistance()); } Debug.Log(persistence); }
void OnCollisionStay(Collision collision) { Debug.Log("Collided " + collision.collider.name + " " + groundCount + "/" + persistence); Debug.DrawRay(collision.contacts[0].point, collision.contacts[0].normal, Color.red); for (int i = 0; i < collision.contactCount; i++) { if (Vector3.Dot(collision.contacts[i].normal, Vector3.up) > 0.8) { if (groundCollection.Find(ground => ground.collider == collision.collider) == null) { groundCollection.Add(new Ground(collision.collider, collision.contacts[i].normal)); currentPlatform = collision.gameObject.GetComponent <MovingPlataform>(); } } } }