Пример #1
0
    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);
    }
Пример #2
0
    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>();
                }
            }
        }
    }