// 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());
                }
            }
        }
    }
Esempio n. 2
0
    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);
        }
    }