Exemple #1
0
    // 190603 LifeBalance
    // Randomize LineFall Missile Location
    private LineFallMissilePosition CreateLineFallMissilePos()
    {
        LineFallMissilePosition result = lineFallMissilePosition;

        int min = (int)LineFallMissilePosition.Left;
        int max = (int)LineFallMissilePosition.StateCount;

        switch (result)
        {
        case LineFallMissilePosition.Left:
            result = (LineFallMissilePosition)Random.Range(min, 2);
            break;

        case LineFallMissilePosition.Middle:
            result = (LineFallMissilePosition)Random.Range(min, max);
            break;

        case LineFallMissilePosition.Right:
            result = (LineFallMissilePosition)Random.Range(1, max);
            break;

        default:
            result = (LineFallMissilePosition)Random.Range(min, max);
            break;
        }

        //Debug.Log(result);

        return(result);
    }
Exemple #2
0
    // 190318 LifeBalance
    // Launch Missile method
    private void ShotMissile()
    {
        if (missileLaunchStack >= missileSaveStack)
        {
            //Debug.Log("Shuffle");
            bossPatternState   = BossPatternState.Cooldown;
            missileLaunchStack = 0;
            isLineFallAlive    = false;
            isSRGAlive         = false;
            return;
        }
        shotTimerCheck += Time.deltaTime;
        if (shotTimerCheck >= shotTimer)
        {
            Vector2 spawnPosition = this.transform.position;
            bool    chaseMode     = false;
            chaseSpeed = chaseStaticSpeed;

            //Debug.Log("missile : " + missileLaunchStack);
            switch (bossPatternName)
            {
            case BossPatternName.Vertical:
            {
                //bezierStart = bezierCenter = bezierEnd = this.gameObject.transform.position;
                //ChaseTimer = Random.Range(ChaseTimerMin, ChaseTimerMax);

                chaseMode = true;
                targetPos = playerPos;

                int missileStorage = spawnSpotTop.Count;


                for (int i = 0; i < missileStorage; i += 2)
                {
                    //Debug.Log("Pattern num : " + verticalPattern);
                    Vector2 target = spawnSpotTop[i];
                    target.y -= screenHeight + (term * 3);
                    //target.x += gap * 2;
                    direction = opCurves.SeekDirection(spawnSpotTop[i], target);

                    spawnPosition = spawnSpotTop[i];

                    GameObject      temp  = Instantiate(lineFallMissile, spawnPosition, Quaternion.Euler(0, 0, 0));
                    LineFallMissile temp2 = temp.GetComponent <LineFallMissile>();
                    temp2.SetRoute(direction, bezierStart, bezierCenter, bezierEnd, chaseSpeed, chaseMode, this.gameObject.transform.position);
                    temp2.SetPlayerPosition(playerPos);
                }

                SoundManager.Instance.ShortSpeaker(SoundManager.Speaker.Center, soundSideAndVertical);

                break;
            }

            case BossPatternName.Horizon:
            {
                // missile will going to out of screed both side
                bezierStart = bezierCenter = bezierEnd = this.gameObject.transform.position;
                targetPos   = bezierEnd;

                chaseMode = true;

                int missileStorage = spawnSpotLeft.Count;


                for (int i = 0; i < missileStorage; i += 2)
                {
                    if (verticalPattern == VerticalPattern.LeftToRight)
                    {
                        Vector2 target = spawnSpotRight[i];
                        //target.y -= term * 3;
                        direction = opCurves.SeekDirection(spawnSpotLeft[i], target);

                        spawnPosition = spawnSpotLeft[i];

                        soundSendClip = soundSideAndVertical;
                        soundSpeaker  = SoundManager.Speaker.Left;
                    }
                    if (verticalPattern == VerticalPattern.RightToLeft)
                    {
                        Vector2 target = spawnSpotLeft[i];
                        //target.y -= term * 3;
                        direction = opCurves.SeekDirection(spawnSpotRight[i], target);

                        spawnPosition = spawnSpotRight[i];

                        soundSendClip = soundSideAndVertical;
                        soundSpeaker  = SoundManager.Speaker.Right;
                    }

                    GameObject      temp  = Instantiate(lineFallMissile, spawnPosition, Quaternion.Euler(0, 0, 0));
                    LineFallMissile temp2 = temp.GetComponent <LineFallMissile>();
                    temp2.SetRoute(direction, bezierStart, bezierCenter, bezierEnd, chaseSpeed, chaseMode, this.gameObject.transform.position);
                    temp2.SetPlayerPosition(playerPos);

                    SoundManager.Instance.ShortSpeaker(soundSpeaker, soundSendClip);
                }


                break;
            }

            case BossPatternName.LineFall:
            {
                targetPos = spawnPosition;

                spawnPosition    = playerPos;
                spawnPosition.y += screenHeight;

                //Debug.Log("H2 : " + screenHeight);
                chaseMode = true;


                direction = opCurves.SeekDirection(spawnPosition, targetPos);

                lineFallMissilePosition = CreateLineFallMissilePos();

                GameObject            temp  = Instantiate(lineFallMissileSquare, spawnPosition, Quaternion.Euler(0, 0, 0));
                LineFallMissileSquare temp2 = temp.GetComponent <LineFallMissileSquare>();


                temp2.SetRoute(direction, (int)lineFallMissilePosition, speedLF * rivisionSpeed, this.gameObject.transform.position);
                temp2.SetPlayerPosition(playerPos);


                SoundManager.Instance.ShortSpeaker(SoundManager.Speaker.Center, soundLineFall);

                break;
            }

            case BossPatternName.SlowRailGun:
            {
                targetPos = spawnPosition;

                spawnPosition    = playerPos;
                spawnPosition.y += screenHeight * 0.5f;

                direction = opCurves.SeekDirection(spawnPosition, targetPos);

                lineFallMissilePosition = CreateLineFallMissilePos();

                GameObject      temp  = Instantiate(lineFallSlowRailGun, spawnPosition, Quaternion.Euler(0, 0, 0));
                LineFallMissile temp2 = temp.GetComponent <LineFallMissile>();

                //Debug.Log("Speed : " + speedSRG);

                temp2.SetRoute(direction, Vector2.zero, Vector2.zero, Vector2.zero, speedSRG * rivisionSpeed, true, this.gameObject.transform.position);
                temp2.SetPlayerPosition(playerPos);

                SoundManager.Instance.ShortSpeaker(SoundManager.Speaker.Center, soundSRG);

                break;
            }

            default:
                //Debug.Log("BossShotMissile Module Error!");
                break;
            }
            shotTimerCheck = 0;
            missileLaunchStack++;
        }
    }