public void OnDie() { if (peopleInside > 0) { sessionData.peopleDied += peopleInside; peopleInside = 0; Instantiate(tombstonePrefab, transform.position, Quaternion.identity, transform.parent); } if (flammable.IsOnFire()) { Instantiate(explosionPrefab, transform.position, Quaternion.identity, transform.parent); } spriteRenderer.sprite = ashSprite; spriteRenderer.sortingLayerName = "Floor"; spriteRenderer.color = Color.white; castsShadow.RemoveShadow(); state = State.Dead; }
void OnTriggerEnter2D(Collider2D collider) { Flammable flammable = collider.gameObject.GetComponentInChildren <Flammable>(); if (flammable && flammable.IsOnFire()) { Instantiate(waterSplashPrefab, transform.position, Quaternion.identity, transform.parent); SoundManager.Play(waterHitSound); Destroy(gameObject); } else if (collider.gameObject.GetComponent <Car>() || collider.gameObject.GetComponent <Propane>()) { collider.gameObject.GetComponent <Rigidbody2D>().velocity = body.velocity / 2; } }
IEnumerator CheckForSwerveTargets() { while (true) { RaycastHit2D[] results = Physics2D.CircleCastAll(transform.position, NEAR_BUILDING_DISTANCE, Vector2.zero, 0); foreach (RaycastHit2D result in results) { Flammable flammable = result.collider.gameObject.GetComponent <Flammable>(); Vector2 playerDelta = playerData.position - body.position; if (flammable && !flammable.IsOnFire() && result.collider.gameObject.transform.parent != null && result.collider.gameObject.transform.parent.tag == "Building" && state == State.Normal && Random.value < SWERVE_CHANCE && playerDelta.sqrMagnitude < NEAR_PLAYER_SWERVE_DISTANCE * NEAR_PLAYER_SWERVE_DISTANCE) { state = State.Swerve; swerveTarget = result.collider.gameObject.transform; } } yield return(new WaitForSeconds(2f)); } }