コード例 #1
0
    void selfDestructFunction()
    {
        if (gameObject.activeSelf == true)
        {
            tempSelfDestructTimer -= Time.deltaTime;

            if (tempSelfDestructTimer <= 0.0f)
            {
                turningAngle = 0;
                Quaternion targetAngle = Quaternion.identity;
                bulletTransform.rotation = Quaternion.identity;
                bulletRigidbody.velocity = Vector3.zero;

                rainFallTimerCountdown     = 0f;
                rainFallStopTimerCountdown = 0f;
                aimPlayerCountdown         = 0f;
                fallen               = false;
                stop                 = false;
                aimed                = false;
                bounceWall           = false;
                currentBulletPattern = BulletPatternType.SET_TYPE;
                isToBeDestroyed      = true;
            }
        }
    }
コード例 #2
0
    public void BulletTurningCallFunction()
    {
        if (bulletTurningInitialRun == true)
        {
            currentBulletPattern = BulletPatternType.TURNING_RIGHT;

            BulletTurningMainFunction();
            bossAIScript.playBossAttackingAnimation = true;

            isBulletTurningActive   = true;
            bulletTurningInitialRun = false;
        }

        if (isBulletTurningActive == true)
        {
            bulletTurningCounter += Time.deltaTime;

            if (bulletTurningCounter >= bulletTurningTimerValue)
            {
                BulletTurningMainFunction();
                bossAIScript.playBossAttackingAnimation = true;
            }
        }
        else
        {
            bulletTurningCounter = 0.0f;
        }
    }
コード例 #3
0
    void OnTriggerEnter(Collider other)
    {
        if (gameObject.activeSelf == true)
        {
            // Delete Undestroyalble Bullet if not needed for final build
            #region Undestroyable Bullet Function
            if (bulletType != BulletType.BLUE_BULLET) // Test Undestroyable Blue Bullet
            {
                if (other.tag == "PlayerHitbox" || other.gameObject.tag == "ChargeSlashProjectile")
                {
                    tempSelfDestructTimer = 0f;
                }
            }
            #endregion  // Delete if not needed for final build

            #region Bomb Explosion Function
            if (other.tag == "PlaneHitbox" && isBomb)
            //if(isBomb && transform.position.y <= 2.5f)   //Please change this to distance formula from ground
            {
                transform.rotation = Quaternion.Euler(0, 0, 0);

                float centerpointDistanceChecker = Vector3.Distance(centerpointChecker.position, transform.position);

                if (centerpointDistanceChecker <= 107.25f)
                {
                    //insert bomb script
                    for (int i = 0; i < 12; i++)
                    {
                        GameObject redBullet = ObjectPooler.Instance.getPooledObject("Rhythm Bullet");
                        redBullet.GetComponent(typeof(BulletPattern));
                        if (redBullet != null)
                        {
                            turningAngle = 0f;
                            redBullet.transform.position  = new Vector3(transform.position.x, bulletStandardHeight, transform.position.z);
                            redBullet.transform.rotation  = transform.rotation;
                            redBullet.transform.rotation *= Quaternion.Euler(0, i * 30, 0);
                            redBullet.GetComponent <BulletPattern>().bulletSpeed          = 10f;
                            redBullet.GetComponent <BulletPattern>().selfDestructTimer    = 15f;
                            redBullet.GetComponent <BulletPattern>().smoothing            = 0f;
                            redBullet.GetComponent <BulletPattern>().bounceWall           = true;
                            redBullet.GetComponent <BulletPattern>().currentBulletPattern = BulletPatternType.STRAIGHT;
                            redBullet.SetActive(true);

                            if (i == 0) // Activates the Audio Source component for only one Bullet and plays the 'Touchdown' sound
                            {
                                redBullet.GetComponent <BulletPattern>().playBulletTouchdownSound = true;
                            }
                        }
                    }
                }

                isBomb = false;
                tempSelfDestructTimer = 0f;
            }
            #endregion

            #region Wall Bounce Function
            if (other.tag == "Wall" && bounceWall)
            {
                //fix
                currentBulletPattern = BulletPatternType.AIM_PLAYER;
                aimPlayerTimer       = 0.1f;
                bounceWall           = false;
                isBounceWall         = true;

                playBulletReflectSound = true;
            }
            #endregion

            #region Super Ultra Mega Bomb Explosion function
            if (other.tag == "PlaneHitbox" && isSuperUltraMegaDeathBomb)
            {
                transform.rotation = Quaternion.Euler(0, 0, 0);

                float centerpointDistanceChecker = Vector3.Distance(centerpointChecker.position, transform.position);

                if (centerpointDistanceChecker <= 107.5f)
                {
                    //insert bomb script
                    //1st wave
                    for (int i = 0; i < 24; i++)
                    {
                        GameObject redBullet = ObjectPooler.Instance.getPooledObject("Rhythm Bullet");
                        redBullet.GetComponent(typeof(BulletPattern));
                        if (redBullet != null)
                        {
                            redBullet.transform.position  = new Vector3(transform.position.x, bulletStandardHeight, transform.position.z);
                            redBullet.transform.rotation  = transform.rotation;
                            redBullet.transform.rotation *= Quaternion.Euler(0, i * 15f, 0);
                            redBullet.GetComponent <BulletPattern>().bulletSpeed       = 15f;
                            redBullet.GetComponent <BulletPattern>().selfDestructTimer = 10f;
                            currentBulletPattern = BulletPatternType.STRAIGHT;
                            redBullet.SetActive(true);
                        }

                        if (i == 0) // Activates the Audio Source component for only one Bullet and plays the 'Touchdown' sound
                        {
                            redBullet.GetComponent <BulletPattern>().playBulletTouchdownSound = true;
                        }
                    }

                    //2nd wave
                    for (int i = 0; i < 36; i++)
                    {
                        GameObject redBullet = ObjectPooler.Instance.getPooledObject("Rhythm Bullet");
                        redBullet.GetComponent(typeof(BulletPattern));
                        if (redBullet != null)
                        {
                            redBullet.transform.position  = new Vector3(transform.position.x, bulletStandardHeight, transform.position.z);
                            redBullet.transform.rotation  = transform.rotation;
                            redBullet.transform.rotation *= Quaternion.Euler(0, i * 10, 0);
                            redBullet.GetComponent <BulletPattern>().bulletSpeed       = 12f;
                            redBullet.GetComponent <BulletPattern>().selfDestructTimer = 10f;
                            currentBulletPattern = BulletPatternType.STRAIGHT;
                            redBullet.SetActive(true);
                        }

                        if (i == 0) // Activates the Audio Source component for only one Bullet and plays the 'Touchdown' sound
                        {
                            redBullet.GetComponent <BulletPattern>().playBulletTouchdownSound = true;
                        }
                    }

                    //3rd wave
                    for (int i = 0; i < 48; i++)
                    {
                        GameObject redBullet = ObjectPooler.Instance.getPooledObject("Rhythm Bullet");
                        redBullet.GetComponent(typeof(BulletPattern));
                        if (redBullet != null)
                        {
                            redBullet.transform.position  = new Vector3(transform.position.x, bulletStandardHeight, transform.position.z);
                            redBullet.transform.rotation  = transform.rotation;
                            redBullet.transform.rotation *= Quaternion.Euler(0, i * 7.5f, 0);
                            redBullet.GetComponent <BulletPattern>().bulletSpeed       = 10f;
                            redBullet.GetComponent <BulletPattern>().selfDestructTimer = 20f;
                            currentBulletPattern = BulletPatternType.STRAIGHT;
                            redBullet.SetActive(true);
                        }

                        if (i == 0) // Activates the Audio Source component for only one Bullet and plays the 'Touchdown' sound
                        {
                            redBullet.GetComponent <BulletPattern>().playBulletTouchdownSound = true;
                        }
                    }
                }

                isSuperUltraMegaDeathBomb = false;
                tempSelfDestructTimer     = 0f;
            }
            #endregion
        }
    }
コード例 #4
0
    void BulletTurningMainFunction()
    {
        if (currentBulletPattern == BulletPatternType.TURNING_RIGHT)
        {
            for (int i = 0; i < 45; i++)
            {
                GameObject redBullet = ObjectPooler.Instance.getPooledObject("Rhythm Bullet");
                bulletPattern = (BulletPattern)redBullet.GetComponent(typeof(BulletPattern));

                if (redBullet != null)
                {
                    redBullet.transform.position       = new Vector3(transform.position.x, bulletStandardHeight, transform.position.z);
                    redBullet.transform.rotation       = transform.rotation;
                    redBullet.transform.rotation      *= Quaternion.Euler(0, i * (360f / 45f), 0);
                    bulletPattern.bulletSpeed          = 10f;
                    bulletPattern.turningAngle         = i * (360f / 45f);
                    bulletPattern.smoothing            = 2f;
                    bulletPattern.selfDestructTimer    = 7f;
                    bulletPattern.currentBulletPattern = BulletPattern.BulletPatternType.TURNING_RIGHT;
                    redBullet.SetActive(true);

                    if (i == 0)
                    {
                        SoundManagerScript.mInstance.PlaySFX(AudioClipID.SFX_BULLET_BOMBING_RUN_TOUCHDOWN);

                        if (bossAIScript.playBossAttackingAnimation == true)
                        {
                            //bossAIScript.bossAnimator.Play("BossAttackAnimation",-1,0.0f);

                            bossAIScript.playBossAttackingAnimation = false;
                        }
                    }
                }
            }

            bulletTurningWaveCount++;
            bulletTurningCounter = 0.0f;

            if (bulletTurningWaveCount >= 4)
            {
                currentBulletPattern = BulletPatternType.BOTH_TURNS;
            }
            else
            {
                currentBulletPattern = BulletPatternType.TURNING_LEFT;
            }
        }
        else if (currentBulletPattern == BulletPatternType.TURNING_LEFT)
        {
            for (int i = 0; i < 45; i++)
            {
                GameObject blueBullet = ObjectPooler.Instance.getPooledObject("Rhythm Bullet"); // Non-Rhythm Bullet (Non-Rhythm Bullet - Actual)
                bulletPattern = (BulletPattern)blueBullet.GetComponent(typeof(BulletPattern));

                if (blueBullet != null)
                {
                    blueBullet.transform.position      = new Vector3(transform.position.x, bulletStandardHeight, transform.position.z);
                    blueBullet.transform.rotation      = transform.rotation;
                    blueBullet.transform.rotation     *= Quaternion.Euler(0, i * (360f / 45f), 0);
                    bulletPattern.bulletSpeed          = 10f;
                    bulletPattern.turningAngle         = i * (360f / 45f);
                    bulletPattern.smoothing            = 2f;
                    bulletPattern.selfDestructTimer    = 7f;
                    bulletPattern.currentBulletPattern = BulletPattern.BulletPatternType.TURNING_LEFT;
                    blueBullet.SetActive(true);
                }

                if (i == 0)
                {
                    SoundManagerScript.mInstance.PlaySFX(AudioClipID.SFX_BULLET_BOMBING_RUN_TOUCHDOWN);

                    if (bossAIScript.playBossAttackingAnimation == true)
                    {
                        if (bossIntialAttackAnimationCheck == true)
                        {
                            bossAIScript.bossAnimator.Play("BossAttackAnimation", -1, 0.0f);
                        }

                        if (bossIntialAttackAnimationCheck == false)
                        {
                            bossIntialAttackAnimationCheck = true;
                        }

                        bossAIScript.playBossAttackingAnimation = false;
                    }
                }
            }

            bulletTurningWaveCount++;
            bulletTurningCounter = 0.0f;

            if (bulletTurningWaveCount >= 4)
            {
                currentBulletPattern = BulletPatternType.BOTH_TURNS;
            }
            else
            {
                currentBulletPattern = BulletPatternType.TURNING_RIGHT;
            }
        }
        else if (currentBulletPattern == BulletPatternType.BOTH_TURNS)
        {
            for (int i = 0; i < 45; i++)
            {
                GameObject redBullet = ObjectPooler.Instance.getPooledObject("Rhythm Bullet");
                bulletPattern = (BulletPattern)redBullet.GetComponent(typeof(BulletPattern));

                if (redBullet != null)
                {
                    redBullet.transform.position       = new Vector3(transform.position.x, bulletStandardHeight, transform.position.z);
                    redBullet.transform.rotation       = transform.rotation;
                    redBullet.transform.rotation      *= Quaternion.Euler(0, i * (360f / 45f), 0);
                    bulletPattern.bulletSpeed          = 10f;
                    bulletPattern.turningAngle         = i * (360f / 45f);
                    bulletPattern.smoothing            = 2f;
                    bulletPattern.selfDestructTimer    = 7f;
                    bulletPattern.currentBulletPattern = BulletPattern.BulletPatternType.TURNING_RIGHT;
                    redBullet.SetActive(true);
                }

                GameObject blueBullet = ObjectPooler.Instance.getPooledObject("Rhythm Bullet"); // Non-Rhythm Bullet (Non-Rhythm Bullet - Actual)
                bulletPattern = (BulletPattern)blueBullet.GetComponent(typeof(BulletPattern));

                if (blueBullet != null)
                {
                    blueBullet.transform.position      = new Vector3(transform.position.x, bulletStandardHeight, transform.position.z);
                    blueBullet.transform.rotation      = transform.rotation;
                    blueBullet.transform.rotation     *= Quaternion.Euler(0, i * (360f / 45f), 0);
                    bulletPattern.bulletSpeed          = 10f;
                    bulletPattern.turningAngle         = i * (360f / 45f);
                    bulletPattern.smoothing            = 2f;
                    bulletPattern.selfDestructTimer    = 7f;
                    bulletPattern.currentBulletPattern = BulletPattern.BulletPatternType.TURNING_LEFT;
                    blueBullet.SetActive(true);
                }

                if (i == 0)
                {
                    SoundManagerScript.mInstance.PlaySFX(AudioClipID.SFX_BULLET_BOMBING_RUN_TOUCHDOWN);

                    if (bossAIScript.playBossAttackingAnimation == true)
                    {
                        int randNum = Random.Range(0, 6);

                        if (randNum == 5)
                        {
                            bossAIScript.bossAnimator.Play("BossLaughAnimation", -1, 0.0f);
                        }
                        else
                        {
                            bossAIScript.bossAnimator.Play("BossAttack2Animation", -1, 0.0f);
                        }

                        bossAIScript.playBossAttackingAnimation = false;
                    }
                }
            }

            bulletTurningWaveCount = 0;
            bulletTurningCounter   = -1.0f;

            currentBulletPattern = BulletPatternType.TURNING_RIGHT;
        }
    }
コード例 #5
0
 void Start()
 {
     player = GameObject.FindGameObjectWithTag("Player");
     dropSuperMegaUltraDeathBomb = false;
     currentBulletPattern        = BulletPatternType.TURNING_RIGHT;
 }