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(); } }
void ExplodeListener(SendExplodeArgs sendExplodeArgs) { if (sendExplodeArgs.attacking) { menuController.GoToMenuScene(1f); TriggerMove triggerMove = GetComponent <TriggerMove>(); triggerMove.HideSelfAndExplode(); } }
void ExplodeListener(SendExplodeArgs sendExplodeArgs) { if (sendExplodeArgs.attacking) { sendExplodeArgs.glow = glow; arena.Begin(); TriggerMove triggerMove = GetComponent <TriggerMove>(); triggerMove.DestroySelf(true); } }
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); } }
void ExplodeListener(SendExplodeArgs sendExplodeArgs) { raven.ExplodeListener(sendExplodeArgs); }
void ExplodeListener(SendExplodeArgs sendExplodeArgs) { sendExplodeArgs.glow = glow; DestroySelf(true); }