void OnJumpTileHit(JumpTileCollision tileCollision) { if (gameController != null && scoreText != null) { scoreText.text = string.Format("SCORE: {0}", tileCollision.Player.PlayerScore); } }
void OnCollisionEnter(Collision col) { if (col.collider.tag == Tags.JumpTile) { JumpTileCollision tileCollision = new JumpTileCollision(col, this, col.collider.GetComponent <JumpTile> ()); Messenger <JumpTileCollision> .Broadcast(MessengerEventNames.JumpTileHit, tileCollision, MessengerMode.DONT_REQUIRE_LISTENER); } else { Messenger.Broadcast(GameController.MSG_RESET_GAME, MessengerMode.DONT_REQUIRE_LISTENER); } }
private void OnJumpTileHit(JumpTileCollision tileCollision) { if (player == null) { return; } switch (tileCollision.Tile.Type) { case JumpTile.TileType.REGULAR: player.PlayerScore += tileCollision.Tile.TileValue; break; case JumpTile.TileType.DOUBLE_SCORE: player.PlayerScore *= 2; break; } bool isBottomCollision = false; for (int i = 0; i < tileCollision.Collision.contacts.Length; i++) { if (tileCollision.Collision.contacts [i].point.y > tileCollision.Player.transform.position.y) { isBottomCollision = true; break; } } switch (tileCollision.Tile.Type) { case JumpTile.TileType.BRICK: if (!isBottomCollision) { tileCollision.Player.Rigidbody.velocity = Vector3.zero; } tileCollision.Player.CurrentMomentum = isBottomCollision ? 0f : tileCollision.Player.InitialJumpForce * 0.75f; break; case JumpTile.TileType.SPIKE: { PlayerEffect shieldEffect = null; if (player.PlayerEffects != null && player.PlayerEffects.Count > 0) { shieldEffect = player.PlayerEffects.Find(e => e.Type == PlayerEffect.EffectType.SHIELD); } // shield effect protects the player from the effects of the spike tile if (shieldEffect != null) { tileCollision.Player.CurrentMomentum = tileCollision.Player.InitialJumpForce; player.PlayerEffects.Remove(shieldEffect); tileCollision.Collision.collider.enabled = false; } else { // spike tiles instantly kill the player tileCollision.Player.CurrentMomentum = 0f; ResetGame(); } tileCollision.Player.Rigidbody.velocity = Vector3.zero; } break; case JumpTile.TileType.ROCKET: tileCollision.Player.Rigidbody.velocity = Vector3.zero; break; default: { tileCollision.Player.Rigidbody.velocity = Vector3.zero; bool setMomentum = true; if (player.PlayerEffects != null && player.PlayerEffects.Count != 0) { if (player.PlayerEffects.Find(e => e.Type == PlayerEffect.EffectType.ROCKET_JUMP) != null) { setMomentum = false; } } if (setMomentum) { tileCollision.Player.CurrentMomentum = tileCollision.Player.InitialJumpForce; } EnableRegularParticleEffect(tileCollision.Tile.transform.position); } break; } }