private void OnCollisionEnter(Collision collision) { if (isDestroying) { return; } GroundTile tile = collision.gameObject.GetComponent <GroundTile>(); PlayerController player = collision.gameObject.GetComponent <PlayerController>(); Ramp ramp = collision.gameObject.GetComponent <Ramp>(); if (tile != null) { if (tile.HandleHit(teamAllegiance)) { Disintegrate(); } } else if (player != null && player.team == TeamUtils.GetOppositeTeam(teamAllegiance)) { if (GameManager.Instance.rules.scoreIfHitPlayer) { GameManager.Instance.IncrementScore(teamAllegiance); Disintegrate(); } } else if (ramp != null) { if (GameManager.Instance.rules.rampChangeAlliegance) { ChangeAllegiance(ramp.team); } } }
public bool HandleHit(ETeam ballTeam) { if (ballTeam == TeamUtils.GetOppositeTeam(team)) { if (GameManager.Instance.rules.hitsToDestroyTiles > 0) { hit++; if (hit >= GameManager.Instance.rules.hitsToDestroyTiles) { if (GameManager.Instance.rules.scoreIfDestroyTile) { GameManager.Instance.IncrementScore(ballTeam); } DisableTile(); } else { renderer.material = hitMaterial; } } else if (GameManager.Instance.rules.scoreIfDestroyTile) { GameManager.Instance.IncrementScore(ballTeam); } return(true); } else //Ball hit tile of same team { return(false); //Start glow effect } }
private void OnTriggerEnter(Collider other) { Ball ball = other.gameObject.GetComponent <Ball>(); if (ball != null) { if (ball.teamAllegiance != ETeam.None && GameManager.Instance.rules.scoreIfBallFalls && ball.teamAllegiance == TeamUtils.GetOppositeTeam(team)) { GameManager.Instance.IncrementScore(ball.teamAllegiance); } Destroy(ball.gameObject); return; } PlayerController player = other.gameObject.GetComponent <PlayerController>(); if (player != null && destroyPlayer) { if (player.team != ETeam.None && GameManager.Instance.rules.scoreIfPlayerFalls) { GameManager.Instance.IncrementScore(TeamUtils.GetOppositeTeam(player.team)); } GameManager.Instance.ReplacePlayer(player); return; } }