コード例 #1
0
    void Update()
    {
        timer += Time.deltaTime;

        // Shoot //
        if (Input.GetKey(KeyCode.Mouse0) && timer >= inventory.equipment [inventory.g].gun.rateOfFire && Time.timeScale != 0 && !menu && !house)
        {
            switch (inventory.equipment [inventory.g].gun.fireMode)
            {
            case 0:             // Full-auto //
                if (chamber && !sprinting && !reloading && !switching)
                {
                    if (ammo.shot(inventory.equipment [inventory.g].gun.ammoID))
                    {
                        Shoot();
                    }
                }
                break;

            case 1:             // Semi-auto //
                if (!trigger && chamber && !sprinting && !reloading && !switching)
                {
                    if (ammo.shot(inventory.equipment [inventory.g].gun.ammoID))
                    {
                        trigger = true;
                    }
                    Shoot();
                }
                break;

            case 2:             // Shotgun //
                if (!trigger && chamber && !sprinting && !reloading && !switching)
                {
                    if (ammo.shot(inventory.equipment [inventory.g].gun.ammoID))
                    {
                        trigger = true;
                    }
                    if (mag >= 0)
                    {
                        Shoot();
                    }
                }
                break;

            default:
                break;
            }
            if (Input.GetKeyDown(KeyCode.Mouse0) && mag == 0 && !chamber)
            {
                gunEmpty.Play();
            }
        }
        if (Input.GetKeyUp(KeyCode.Mouse0))
        {
            trigger = false;
        }

        // Reload //
        if (Input.GetKey(KeyCode.R) && ammo.ammo[inventory.equipment [inventory.g].gun.ammoID] != 0 && !reloading && !switching)
        {
            reload();
            timer     = 0.0f;
            reloading = true;
            inventory.equipment [inventory.g].gun.reloadAudio.Play();
        }

        // Reload Timer //
        if (reloading)
        {
            if (timer >= inventory.equipment [inventory.g].gun.reloadTime)
            {
                reloading = false;
            }
        }

        // Rate of Fire //
        if (timer >= inventory.equipment [inventory.g].gun.rateOfFire * 0.1f + 0.02f)
        {
            disableShot();
        }

        // Aiming //
        if (Input.GetKeyDown(KeyCode.Mouse1) && !switching && !reloading && !sprinting && !menu)
        {
            aiming        = true;
            currAccuracy += 5.0f;
        }
        if (Input.GetKeyUp(KeyCode.Mouse1) && aiming && !switching && !reloading && !sprinting && !menu)
        {
            aiming        = false;
            currAccuracy -= 5.0f;
        }

        // Accuracy Cone //
        if (currAccuracy < 100.0f)
        {
            currAccuracy += 0.1f;
        }

        // Sprinting //
        if (Input.GetKey(KeyCode.LeftShift) && (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.D)))
        {
            sprinting = true;
        }
        if (!Input.GetKey(KeyCode.LeftShift) || (!Input.GetKey(KeyCode.W) && !Input.GetKey(KeyCode.A) && !Input.GetKey(KeyCode.S) && !Input.GetKey(KeyCode.D)))
        {
            sprinting = false;
        }

        // Weapon Switching //
        if (Input.GetKeyDown(KeyCode.Alpha1) && !switching)
        {
            switching   = true;
            timer       = 0.0f;
            inventory.g = 0;
            chamber     = false;
            reload();
        }
        if (Input.GetKeyDown(KeyCode.Alpha2) && !switching)
        {
            switching   = true;
            timer       = 0.0f;
            inventory.g = 1;
            chamber     = false;
            reload();
        }
        if (Input.GetKeyDown(KeyCode.Alpha3) && !switching)
        {
            switching   = true;
            timer       = 0.0f;
            inventory.g = 2;
            chamber     = false;
            reload();
        }

        // Weapon Switching Timer //
        if (switching)
        {
            if (timer >= switchTimer)
            {
                switching = false;
            }
        }

        // Check if in Menu //
        if (Input.GetKeyDown(KeyCode.Tab))
        {
            menu = !menu;
        }
    }