IEnumerator ActionAnimateDead() { int wagonNumber; FindMostDamagedCarriage(); //Choose spawn point //If player health below 50%, spawn there //If carriage health below 50%, spawn there //else spawn near player if (lowestCarriageHealth <= 50.0f && playerHealth >= 50.0f) { wagonNumber = lowestCarriageHealthIndex; } else { wagonNumber = FindSpawnPointNearPlayer(); } //Spawn undead for (int i = 0; i < undeadAnimatedPerAction; i++) { if (currentHenchmenCount >= maxHenchmen) { break; } GameObject henchman = Instantiate(henchmenCharacter, spawnPoints[wagonNumber].transform.position, spawnPoints[wagonNumber].transform.rotation); henchman.GetComponent <HenchmanCharacter>().wagonNo = wagonNumber; henchmenAI.AddHenchmen(henchman, wagonNumber); currentHenchmenCount++; yield return(new WaitForSeconds(1)); } //Set state to Idle pState = PestilenceState.Idle; yield return(null); }
void ActionToxicCloud() { int wagonNo = Random.Range(0, wagonManagerList.Length); Instantiate(toxicCloud, wagonManagerList[wagonNo].transform.position + new Vector3(0, Random.Range(0f, 40f)), Quaternion.identity); //Choose location (maybe check if its free of clouds) //Spawn cloud //Set state to Idle pState = PestilenceState.Idle; }
IEnumerator ActionFireBeam() { //Locate player Vector3 target = playerCharacter.transform.position; float multiplier = Random.Range(-1f, 1f); if (multiplier <= 0) { multiplier = -1; } else { multiplier = 1; } Vector3 startPoint = target + new Vector3(multiplier * 10, 0); GameObject beamInstance = Instantiate(beam, transform.position, Quaternion.identity); startPoint.z = 0; beamInstance.transform.right = (startPoint - transform.position); Vector3 beamStartPoint = startPoint; float beamDuration = 4.0f; float beamTimer = 0f; while (beamTimer < beamDuration) { beamTimer += Time.deltaTime; Vector3 endPoint = playerCharacter.transform.position; beamStartPoint += (endPoint - beamStartPoint).normalized * 0.05f; beamInstance.transform.right = beamStartPoint - transform.position; yield return(null); } Destroy(beamInstance); //Fire //Set state to Idle pState = PestilenceState.Idle; yield return(null); }
void ChangeState() { pState = (PestilenceState)Random.Range(0, 5); pState = PestilenceState.AnimateDead; }