private IEnumerator RandomButtonBlink() { yield return(new WaitForEndOfFrame()); switch ((int)(Random.Range(25, 125) / 25)) { case 1: blueButton.ClickButton(); taskList.Add(ValueTypes.ButtonType.Blue); break; case 2: greenButton.ClickButton(); taskList.Add(ValueTypes.ButtonType.Green); break; case 3: redButton.ClickButton(); taskList.Add(ValueTypes.ButtonType.Red); break; case 4: yellowButton.ClickButton(); taskList.Add(ValueTypes.ButtonType.Yellow); break; default: Debug.Log("GameManager/RandomBlinks setting random button error!"); blueButton.ClickButton(); taskList.Add(ValueTypes.ButtonType.Green); break; } yield return(new WaitForSeconds(TIME_DELAY_BETWEEN_BUTTONS_BLINKS)); if (--taskLoop > 0) { StartCoroutine(RandomButtonBlink()); } else { SwitchGameState(ValueTypes.GameState.PlayerTurn); countManager.RestoreBonusScore(); } }
void Shot() { muzzleFlash.Play(); GameObject cartrige = Instantiate(cartrigePrefab, cartrigeEjector.position, cartrigeEjector.rotation); Destroy(cartrige, 2f); Rigidbody rb = cartrige.GetComponent <Rigidbody>(); rb.AddForce(cartrigeEjector.right * (cartrigeForce + Random.Range(0, 0.2f)), ForceMode.Impulse); rb.AddTorque(Random.Range(-15, 15), Random.Range(-15, 15), 0, ForceMode.Impulse); Shoot.pitch = Random.Range(1.3f, 1.5f); Shoot.Play(); RaycastHit hit; if (Physics.Raycast(fpsCam.transform.position, fpsCam.transform.forward, out hit, range)) { Destructible target = hit.transform.GetComponent <Destructible>(); PlayerHealth targetPlayer = hit.transform.GetComponent <PlayerHealth>(); //Optimize****************************************************** SC_NPCEnemy targetEnemy = hit.transform.GetComponent <SC_NPCEnemy>(); ButtonScript button = hit.transform.GetComponent <ButtonScript>(); if (target != null) { target.TakeDamage(damage); } if (targetPlayer != null) { targetPlayer.TakeDamage(damage); } if (targetEnemy != null) { targetEnemy.ApplyDamage(damage); } if (hit.rigidbody != null) { hit.rigidbody.AddForce(-hit.normal * impactForce); } if (button != null) { button.ClickButton(); } Instantiate(impactEffect1, hit.point, Quaternion.LookRotation(hit.normal)); Instantiate(impactEffect2, hit.point, Quaternion.LookRotation(hit.normal)); Instantiate(impactEffect3, hit.point, Quaternion.LookRotation(hit.normal)); GameObject bulletHole = Instantiate(bulletHolePrefab, hit.point, Quaternion.LookRotation(hit.normal)); bulletHole.transform.parent = hit.transform; Collider[] colliders = Physics.OverlapSphere(hit.point, radius); foreach (Collider nearbyObject in colliders) { Rigidbody rd = nearbyObject.GetComponent <Rigidbody>(); if (rd != null) { rd.AddExplosionForce(force, hit.point, radius); } } } }