예제 #1
0
    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();
        }
    }
예제 #2
0
    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);
                }
            }
        }
    }