Example #1
0
    public void Update()
    {
        //Bullets.Add(FindGameObjectsWithTag("bullets"));
        if (isDead == true)
        {
            //On arrête le shake de caméra après une seconde
            playerExplosion.gameObject.SetActive(true);
            if (delayBeforeRespawn - countTimeBeforeRespawn > 1)
            {
                camShaker.SetShake(false);
            }

            if (countTimeBeforeRespawn > 0)
            {
                countTimeBeforeRespawn -= Time.deltaTime;
            }
            else
            {
                countTimeBeforeRespawn = delayBeforeRespawn;
                playerSprite.gameObject.SetActive(true);
                shooters.gameObject.SetActive(true);
                isDead      = false;
                isInvicible = true;
            }
            for (int i = 0; i < Bullets.Length; i++)
            {
                Destroy(Bullets[i].gameObject);
            }
        }

        if (isDead == false)
        {
            playerExplosion.gameObject.SetActive(false);
        }

        if (isInvicible == true)
        {
            invicibilityAanimation.Play();
            countTimeOfInvicibility -= Time.deltaTime;
            if (countTimeOfInvicibility < 0)
            {
                isInvicible = false;
                invicibilityAanimation.Stop();
                countTimeOfInvicibility = invicibiltyDuration;
            }
        }
    }
    protected override IEnumerator doFire(float fireOffsetAngle = 0)
    {
        // fire depending on current level
        if (!LaserInstance)
        {
            switch (level)
            {
            case 1:
                LaserInstance = (GameObject)Instantiate(bullet, transform.position, transform.rotation);
                LaserInstance.transform.SetParent(transform);
                break;

            case 2:
                LaserInstance = (GameObject)Instantiate(BulletLv2, transform.position, transform.rotation);
                LaserInstance.transform.SetParent(transform);
                break;

            case 3:
                LaserInstance = (GameObject)Instantiate(BulletLv3, transform.position, transform.rotation);
                LaserInstance.transform.SetParent(transform);
                break;

            case 4:
                LaserInstance = (GameObject)Instantiate(BulletLv4, transform.position, transform.rotation);
                LaserInstance.transform.SetParent(transform);
                break;

            case 5:
                LaserInstance = (GameObject)Instantiate(BulletLv5, transform.position, transform.rotation);
                LaserInstance.transform.SetParent(transform);
                break;

            default:
                Debug.LogWarning("Invalid weapon level: " + level.ToString());
                break;
            }
        }

        // Shaking!
        Laser laser = LaserInstance.GetComponent <Laser>();

        if (EnabledShaking)
        {
            CameraShaker camera = GameObject.FindWithTag("GameManager").GetComponent <GameManager>().Camera;
            yield return(new WaitForSeconds(laser.StartDelay));

            camera.SetShake(0.1f, FireDuration - laser.StartDelay, 0.5f);
        }

        // End the laser
        if (FireDuration > 0)
        {
            if (EnabledShaking)
            {
                yield return(new WaitForSeconds(FireDuration - laser.StartDelay));
            }
            else
            {
                yield return(new WaitForSeconds(FireDuration));
            }

            endFire();
        }
    }