// 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); }
// 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++; } }