Esempio n. 1
0
    public static Collision2DSideType Opposite(this Collision2DSideType sideType)
    {
        Collision2DSideType opposite;

        if (sideType == Collision2DSideType.Left)
        {
            opposite = Collision2DSideType.Right;
        }
        else if (sideType == Collision2DSideType.Right)
        {
            opposite = Collision2DSideType.Left;
        }
        else if (sideType == Collision2DSideType.Top)
        {
            opposite = Collision2DSideType.Bottom;
        }
        else if (sideType == Collision2DSideType.Bottom)
        {
            opposite = Collision2DSideType.Top;
        }
        else
        {
            opposite = Collision2DSideType.None;
        }

        return(opposite);
    }
Esempio n. 2
0
 private static Collision2DSideType Opposite(Collision2DSideType sideType)
 {
     return(sideType switch
     {
         Collision2DSideType.Left => Collision2DSideType.Right,
         Collision2DSideType.Right => Collision2DSideType.Left,
         Collision2DSideType.Top => Collision2DSideType.Bottom,
         Collision2DSideType.Bottom => Collision2DSideType.Top,
         _ => Collision2DSideType.None
     });
 void OnCollisionEnter2D(Collision2D col)
 {
     if (col.gameObject.name == "Player")
     {
         Collision2DSideType collisionSide = col.GetContactSide();
         if (collisionSide == Collision2DSideType.Right)
         {
             Destroy(skeletonSpriteRenderer.gameObject.GetComponent <BoxCollider2D>());
             skeletonSpriteRenderer.gameObject.GetComponent <SpriteRenderer>().sortingOrder = -1;
             isMoving = false;
             Vector3 pos = skeletonSpriteRenderer.transform.position;
             pos.x -= 0.35f;
             skeletonSpriteRenderer.transform.position = pos;
         }
     }
 }
Esempio n. 4
0
    public static Collision2DSideType GetContactSide(Vector2 max, Vector2 center, Vector2 contact)
    {
        Collision2DSideType side = Collision2DSideType.None;
        float diagonalAngle      = Mathf.Atan2(max.y - center.y, max.x - center.x) * 180 / Mathf.PI;
        float contactAngle       = Mathf.Atan2(contact.y - center.y, contact.x - center.x) * 180 / Mathf.PI;

        if (contactAngle < 0)
        {
            contactAngle = 360 + contactAngle;
        }

        if (diagonalAngle < 0)
        {
            diagonalAngle = 360 + diagonalAngle;
        }

        if (
            ((contactAngle >= 360 - diagonalAngle) && (contactAngle <= 360)) ||
            ((contactAngle <= diagonalAngle) && (contactAngle >= 0))
            )
        {
            side = Collision2DSideType.Right;
        }
        else if (
            ((contactAngle >= 180 - diagonalAngle) && (contactAngle <= 180)) ||
            ((contactAngle >= 180) && (contactAngle <= 180 + diagonalAngle))
            )
        {
            side = Collision2DSideType.Left;
        }
        else if (
            ((contactAngle >= diagonalAngle) && (contactAngle <= 90)) ||
            ((contactAngle >= 90) && (contactAngle <= 180 - diagonalAngle))
            )
        {
            side = Collision2DSideType.Top;
        }
        else if (
            ((contactAngle >= 180 + diagonalAngle) && (contactAngle <= 270)) ||
            ((contactAngle >= 270) && (contactAngle <= 360 - diagonalAngle))
            )
        {
            side = Collision2DSideType.Bottom;
        }

        return(side.Opposite());
    }
Esempio n. 5
0
 void OnCollisionEnter2D(Collision2D col)
 {
     if (col.gameObject.name == "Player")
     {
         Collision2DSideType collisionSide = col.GetContactSide();
         if (collisionSide == Collision2DSideType.Top)
         {
             Destroy(skeletonSpriteRenderer.gameObject.GetComponent <BoxCollider2D>());
             skeletonSpriteRenderer.gameObject.GetComponent <SpriteRenderer>().sortingOrder = -1;
             isMoving = false;
             skeletonSpriteRenderer.flipY = true;
             Vector3 pos = skeletonSpriteRenderer.transform.position;
             pos.y -= 0.35f;
             skeletonSpriteRenderer.transform.position = pos;
             skeletonSpriteRenderer.transform.rotation = Quaternion.Euler(skeletonSpriteRenderer.transform.rotation.eulerAngles.x, skeletonSpriteRenderer.transform.rotation.eulerAngles.y, skeletonSpriteRenderer.transform.rotation.z + 9f);
         }
     }
 }
    void OnCollisionEnter2D(Collision2D col)
    {
        if (col.gameObject.layer == 8)
        {
            setJumpFalse();
        }
        if (col.gameObject.layer == 9)
        {
            life = 0;
            playerDead();
        }
        if (col.gameObject.layer == 10)
        {
            life = 0;
            playerDead();
        }
        if (col.gameObject.layer == 11)
        {
            life = 0;
            playerDead();
        }
        if (col.gameObject.name == "Skeleton")
        {
            Collision2DSideType collisionSide = col.GetContactSide();
            if (collisionSide == Collision2DSideType.Right || collisionSide == Collision2DSideType.Left)
            {
                life = 0;
                playerDead();
            }
            else
            {
                setJumpFalse();
                this.countSkeleton += 1;
            }
        }
        if (col.gameObject.name == "SkeletonVertical")
        {
            Collision2DSideType collisionSide = col.GetContactSide();
            if (collisionSide == Collision2DSideType.Bottom)
            {
                life = 0;
                playerDead();
            }
        }

        if (!SceneManager.GetActiveScene().name.Equals("Fase001_01") && monster != null && monster.gameObject != null)
        {
            if (!isInitScene)
            {
                if (countSkeleton < totalSkeleton)
                {
                    monster.gameObject.SetActive(false);
                }
                else
                {
                    monster.gameObject.SetActive(true);
                }
            }
            else
            {
                monster.gameObject.SetActive(true);
            }
        }
    }