// Update is called once per frame void Update() { if (playerStats.GetHealth() <= 0 || transform.position.y < -8f) { if (gameState == null || !gameState.GetComponent <PointManager>().GameOver()) { if (!isDead) { isDead = true; if (playerStats.GetHealth() <= 0) { Instantiate(deathSmoke, transform.position + Vector3.up, Quaternion.identity); scoreTracker.RecordKill(attacker); } if (GetComponent <PlayerSteeringMode>().GetSteeringMode()) { GetComponent <PlayerMovement>().GiveUpShipOnHit(Vector3.zero); } if (GetComponent <PlayerInventory>().HasCannonBall()) { GetComponent <PlayerInventory>().SetCannonBall(false); Destroy(GetComponent <CarryCannonBall>().GetCannonBall().gameObject); if (Random.Range(0, 2) == 0) { GameObject.Find("CannonballSpawner_boat1").GetComponent <CannonballSpawner>().SpawnCannonball(); } else { GameObject.Find("CannonballSpawner_boat2").GetComponent <CannonballSpawner>().SpawnCannonball(); } } if (GetComponent <PlayerInventory>().HasGem()) { pointManager.DropGold(true); GetComponent <PlayerInventory>().SetGem(false); } StartCoroutine(RespawnOnDeath()); } } } }
IEnumerator DropCoinsOnTakeDamage() { int prevHealth = health; while (true) { if (health < prevHealth) { bool willDie = (health == 0); if (pointManager != null && !willDie) { pointManager.DropGold(willDie); } } prevHealth = health; yield return(null); } }