Exemple #1
0
    void CheckForCollisions()
    {
        // check for platform collisions
        isGrounded  = Physics.CheckSphere(groundCheck.position, groundDistance, platformMask);
        onWallLeft  = Physics.CheckSphere(wallCheckLeft.position, groundDistance, platformMask);
        onWallRight = Physics.CheckSphere(wallCheckRight.position, groundDistance, platformMask);
        onCeiling   = Physics.CheckSphere(ceilingCheck.position, groundDistance, platformMask);

        bool lastFramePhysicallyOnWall = physicallyOnWall;

        physicallyOnWall      = onWallLeft || onWallRight;
        onWallOrInGracePeriod = physicallyOnWall || inWallJumpGracePeriod;
        if (lastFramePhysicallyOnWall && !physicallyOnWall)
        {
            StartCoroutine("WallJumpGracePeriod");
        }

        animator.SetBool("isGrounded", isGrounded);
        animator.SetBool("grippingWallLeft", onWallLeft);
        animator.SetBool("grippingWallRight", onWallRight);


        // check for enemy collisions
        float enemyCheckRadius = enemyCheckDistance;

        if (attacking)
        {
            enemyCheckRadius += attackReach;
        }
        Collider[] hitColliders  = Physics.OverlapSphere(transform.position, enemyCheckRadius, enemyMask);
        bool       damageDealt   = false;
        float      collectedGlow = 0;

        foreach (var hitCollider in hitColliders)
        {
            // tell the other object that we hit it and pass a mutable object to get data back
            SendExplodeArgs sendExplodeArgs = new SendExplodeArgs();
            sendExplodeArgs.invincible = invincible;
            sendExplodeArgs.attacking  = attacking;
            hitCollider.SendMessage("ExplodeListener", sendExplodeArgs);

            // listening object determines whether damage is dealt, and whether glow is received
            if (sendExplodeArgs.dealDamage)
            {
                damageDealt = true;
            }
            // glow defaults to 0, so we can always add them
            // NOTE: if an enemy hits us in the same frame we're getting a coin, we just accept the coin glow
            collectedGlow += sendExplodeArgs.glow;
        }
        if (collectedGlow > 0f && activeArena)
        {
            activeArena.glowGauge.AddGlow(collectedGlow);
        }
        // we only take damage once per frame, even if we're hit by multiple enemies
        if (damageDealt)
        {
            TakeDamage();
        }
    }
Exemple #2
0
 void ExplodeListener(SendExplodeArgs sendExplodeArgs)
 {
     if (sendExplodeArgs.attacking)
     {
         menuController.GoToMenuScene(1f);
         TriggerMove triggerMove = GetComponent <TriggerMove>();
         triggerMove.HideSelfAndExplode();
     }
 }
Exemple #3
0
 void ExplodeListener(SendExplodeArgs sendExplodeArgs)
 {
     if (sendExplodeArgs.attacking)
     {
         sendExplodeArgs.glow = glow;
         arena.Begin();
         TriggerMove triggerMove = GetComponent <TriggerMove>();
         triggerMove.DestroySelf(true);
     }
 }
Exemple #4
0
 public void ExplodeListener(SendExplodeArgs sendExplodeArgs)
 {
     if (!sendExplodeArgs.invincible)
     {
         bool explode = false;
         if (sendExplodeArgs.attacking)
         {
             sendExplodeArgs.glow = glow;
             explode = true;
         }
         else
         {
             sendExplodeArgs.dealDamage = true;
         }
         DestroySelf(explode);
     }
 }
Exemple #5
0
 void ExplodeListener(SendExplodeArgs sendExplodeArgs)
 {
     raven.ExplodeListener(sendExplodeArgs);
 }
Exemple #6
0
 void ExplodeListener(SendExplodeArgs sendExplodeArgs)
 {
     sendExplodeArgs.glow = glow;
     DestroySelf(true);
 }