Reload() public method

public Reload ( ) : void
return void
Beispiel #1
0
    // Update is called once per frame
    void Update()
    {
        _currentWeapon = _weaponManager.GetCurrentWeapon();

        if (Input.GetButtonDown("Reload") && _currentWeapon.currentAmmo != _currentWeapon.maxAmmo)
        {
            _weaponManager.Reload();
            return;
        }

        if (_currentWeapon.fireRate <= 0f)
        {
            if (Input.GetButtonDown("Fire1"))
            {
                Shoot();
            }
        }
        else
        {
            if (Input.GetButtonDown("Fire1"))
            {
                InvokeRepeating("Shoot", 0f, 1f / _currentWeapon.fireRate);
            }
            else if (Input.GetButtonUp("Fire1"))
            {
                CancelInvoke(nameof(Shoot));
            }
        }
    }
Beispiel #2
0
 private void OnReload()
 {
     if (hasAuthority && !weaponManager.IsReloading)
     {
         weaponManager.Reload();
     }
 }
Beispiel #3
0
    private void Update()
    {
        currentWeapon = weaponManager.GetCurrentWeapon();

        if (currentWeapon.bullets < currentWeapon.maxBullets)
        {
            if (Input.GetButtonDown("Reload"))
            {
                weaponManager.Reload();
                return;
            }
        }

        if (currentWeapon.fireRate <= 0.0f)
        {
            if (Input.GetButtonDown("Fire1"))
            {
                Shoot();
            }
        }
        else
        {
            if (Input.GetButtonDown("Fire1"))
            {
                InvokeRepeating("Shoot", 0.0f, 1.0f / currentWeapon.fireRate);
            }
            else if (Input.GetButtonUp("Fire1"))
            {
                CancelInvoke("Shoot");
            }
        }
    }
Beispiel #4
0
    public void Shoot()
    {
        if (weaponManager.isReloading)
        {
            return;
        }

        if (currentWeapon.bullets <= 0)
        {
            weaponManager.Reload();
            Debug.Log("Bullets: " + currentWeapon.bullets);
            return;
        }

        currentWeapon.bullets--;
        GetComponent <AudioSource>().Play();
        if (Physics.Raycast(transform.position, transform.forward, out hit, currentWeapon.range, layerMask))
        {
            if (hit.transform.gameObject.CompareTag(targetTag))
            {
                hit.transform.GetComponent <Entity>().TakeDamage(currentWeapon.damage);
            }
        }

        if (currentWeapon.bullets <= 0)
        {
            weaponManager.Reload();
        }
    }
    [Client]//run only on clients,no interference of net
    void Shoot()
    {
        if (!isLocalPlayer || weaponManager.isReloading)
        {
            return;
        }

        if (currentWeapon.CurrentBullets <= 0)
        {
            weaponManager.Reload();
            return;
        }

        currentWeapon.CurrentBullets--;

        Debug.Log("Remaining bullets: " + currentWeapon.CurrentBullets);

        CmdOnShoot();

        RaycastHit _Hit;

        if (Physics.Raycast(cam.transform.position, cam.transform.forward, out _Hit, currentWeapon.range, mask))
        {
            if (_Hit.collider.tag == PLAYER_TAG)
            {
                CmdPlayerShot(_Hit.collider.name, currentWeapon.Damage, transform.name);
            }

            CmdOnHit(_Hit.point, _Hit.normal);
        }
        if (currentWeapon.CurrentBullets <= 0)
        {
            weaponManager.Reload();
        }
    }
    private void Update()
    {
        if (PauseMenu.isOn == true)
        {
            return;
        }
        currentWeapon = weaponManager.GetCurrentWeapon();
        if (currentWeapon.currentAmmo < currentWeapon.maxCapacity)
        {
            if (Input.GetButtonDown("Reload"))
            {
                weaponManager.Reload();
                return;
            }
        }

        if (!WeaponManager.isReloading)
        {
            if (currentWeapon.fireRate <= 0)
            {
                if (Input.GetButtonDown("Fire1"))
                {
                    Shoot();
                }
            }
            else
            {
                if (Input.GetButton("Fire1"))
                {
                    if (Time.time - lastFired > 1 / currentWeapon.fireRate)
                    {
                        lastFired = Time.time;
                        Shoot();
                    }
                }
            }
        }

        if (Input.GetButtonDown("Fire2") && PlayerController.isSprinting == false)
        {
            isAiming = true;
            weaponManager.Aim();
        }
        if (Input.GetButtonUp("Fire2"))
        {
            isAiming = false;
            weaponManager.Aim();
        }

        if (PlayerController.isSprinting == true)
        {
            isAiming = false;
        }
    }
Beispiel #7
0
    void Update()
    {
        Vector2 shootDir = DungeonGameManager.GetAimingVector();



        if ((Input.GetAxis("Fire1") > 0 || shootDir.sqrMagnitude != 0) && Time.time - timeLastFired > weaponManager.Weapon.Info.cycleTime)
        {
            if (weaponManager.Weapon.CurrentAmmo == 0)
            {
                weaponManager.Reload();
                return;
            }

            timeLastFired = Time.time;
            --weaponManager.Weapon.CurrentAmmo;



            float      halfAngle        = weaponManager.Weapon.Info.inaccuracy / 2f;
            Quaternion randomQuaternion = bulletSpawnPoint.rotation;
            randomQuaternion.eulerAngles += new Vector3(0f, 0f, Random.Range(-halfAngle, halfAngle));

            GameObject bullet = Instantiate(weaponManager.Weapon.Info.bullet, bulletSpawnPoint.position, randomQuaternion);

            Rigidbody2D      rbBullet = bullet.GetComponent <Rigidbody2D>();
            BulletController bm       = bullet.GetComponent <BulletController>();

            bm.lifeTime         = weaponManager.Weapon.Info.bulletLifeTime;
            bm.damage           = weaponManager.Weapon.Info.damage;
            bm.maxCollisions    = weaponManager.Weapon.Info.penetrationDepth;
            bm.gameObject.layer = LayerMask.NameToLayer(bulletLayer);
            //bm.targetTags = new string[] {"Enemy"};

            float   randomAngle     = randomQuaternion.eulerAngles.z * Mathf.Deg2Rad;
            Vector2 directionVector = new Vector2(Mathf.Cos(randomAngle), Mathf.Sin(randomAngle)).normalized;

            rbBullet.velocity = directionVector * weaponManager.Weapon.Info.bulletSpeed; // + rbPlayer.velocity;

            //ps.Play();



            if (weaponManager.Weapon.CurrentAmmo == 0)
            {
                weaponManager.Reload();
            }
        }
    }
Beispiel #8
0
    void Shoot()
    {
        if (!isLocalPlayer)
        {
            return;
        }
        if (weaponManager.isReloading)
        {
            return;
        }
        currentWeapon.bullets--;

        // We are shooting, call OnShoot on the server.
        CmdOnShoot();

        RaycastHit _hit;

        if (Physics.Raycast(cam.transform.position, cam.transform.forward, out _hit, currentWeapon.range, mask))
        {
            if (_hit.collider.tag == PLAYER_TAG)
            {
                CmdPlayerShot(_hit.collider.name, currentWeapon.damage, this.name);
            }

            // We hit something, call on hit on the server.
            CmdOnHit(_hit.point, _hit.normal);
        }

        if (currentWeapon.bullets <= 0)
        {
            weaponManager.Reload();
            return;
        }
    }
Beispiel #9
0
 // Update is called once per frame
 void Update()
 {
     if (Input.GetButtonDown("Fire1"))
     {
         if (manager)
         {
             manager.GetCurrentWeapon().PressTrigger();
         }
     }
     else if (Input.GetButtonUp("Fire1"))
     {
         if (manager)
         {
             manager.GetCurrentWeapon().ReleaseTrigger();
         }
     }
     else if (Input.GetKeyDown(KeyCode.R))
     {
         if (manager)
         {
             manager.Reload();
         }
     }
     else
     {
         foreach (var pair in keyMap)
         {
             if (Input.GetKeyDown(pair.Key))
             {
                 manager.SetCurrentWeapon(pair.Value);
             }
         }
     }
 }
    // action map
    //	0,1: movement
    //		0 is forward movement, 1 is strafing. range -1, 1
    //	2,3: look
    //		2 is horizontal, 3 is vertical. range -1, 1
    //	4: jump
    //		1-hot
    //	5: shoot
    //		1-hot
    //	6: reload
    //		1-hot
    //	7: quick swap weapon
    //		1-hot
    //	8: throw grenade
    //		1-hot
    public override void AgentStep(float[] act)
    {
        // actions
        movement.Move(new Vector2(act[0], act[1]));
        movement.MoveEyes(new Vector2(act[2], act[3]));
        if (act[4] == 1)
        {
            movement.Jump();
        }
        if (act[5] == 1)
        {
            wm.Shoot();
        }
        if (act[6] == 1)
        {
            wm.Reload();
        }
        if (act[7] == 1)
        {
            wm.QuickSwapWeapon();
        }
        if (act[8] == 1)
        {
            wm.ThrowGrenade();
        }


        // rewards
        float rewardIncrement = 0;

        // TODO: implement rewards

        reward += rewardIncrement;
    }
Beispiel #11
0
    private void Update()
    {
        SetHealthAmount(player.GetHealthPct());
        if (!weaponManager.isReloading)
        {
            SetAmmoAmount(weaponManager.GetCurrentWeapon().bullets, weaponManager.GetCurrentWeapon().maxBullets);
        }
        else
        {
            SetAmmoAmount(0, weaponManager.GetCurrentWeapon().maxBullets);
        }
        if (Input.GetKeyDown(KeyCode.Tab))
        {
            scoreboard.SetActive(true);
        }
        else if (Input.GetKeyUp(KeyCode.Tab))
        {
            scoreboard.SetActive(false);
        }

        if (Input.GetKeyDown(KeyCode.R) && !weaponManager.isReloading)
        {
            weaponManager.Reload();
        }
    }
Beispiel #12
0
    private void Update()
    {
        currentWeapon = weaponManager.GetCurrentWeapon();

        if (PauseMenu.IsOn)
        {
            return;
        }

        if (Input.GetKeyDown(KeyCode.R))
        {
            if (currentWeapon.bullets < currentWeapon.maxBullets)
            {
                weaponManager.Reload();
                return;
            }
        }

        if (currentWeapon.fireRate == 0f)
        {
            if (Input.GetButtonDown("Fire1"))
            {
                Shoot();
            }
        }
        else
        {
            if (Input.GetButtonDown("Fire1"))
            {
                InvokeRepeating("Shoot", 0f, 1f / currentWeapon.fireRate);
            }
            else if (Input.GetButtonUp("Fire1"))
            {
                CancelInvoke("Shoot");
            }
        }
        if (Input.GetKeyDown(KeyCode.Alpha1))
        {
            weaponManager.EquipPrimaryWeapon();
        }
        if (Input.GetKeyDown(KeyCode.Alpha2))
        {
            weaponManager.EquipSecondaryWeapon();
        }
    }
 private void TryToReload()
 {
     // if the gun isn't focus and the player doesn't try to shoot
     if (!isGunFocused)
     {
         audioManager.Play(weaponManager.GetCurrentWeapon().soundReload);    // play the sound
         weaponManager.Reload();
     }
 }
Beispiel #14
0
    void Update()
    {
        currentWeapon = weaponManager.GetCurrentWeapon();

        if (PauseMenu.IsOn)
        {
            return;
        }

        if (currentWeapon.bullets < currentWeapon.maxBullets)
        {
            if (Input.GetButtonDown("Reload"))
            {
                reloadsound.Play();
                weaponManager.Reload();
                return;
            }
        }

        if (currentWeapon.fireRate <= 0f)
        {
            if (Input.GetButtonDown("Fire1"))
            {
                Shoot();
            }
        }
        else
        {
            if (Input.GetButtonDown("Fire1"))
            {
                InvokeRepeating("Shoot", 0f, 1f / currentWeapon.fireRate);
            }
            else if (Input.GetKeyDown(KeyCode.Alpha2))
            {
                CancelInvoke("Shoot");
            }
            else if (Input.GetButtonUp("Fire1"))
            {
                CancelInvoke("Shoot");
            }
        }
    }
Beispiel #15
0
    // Update is called once per frame
    void Update()
    {
        currentWeapon = weaponManager.GetCurrentWeapon();

        if (PauseMenu.isOn)
        {
            return;
        }

        if (currentWeapon.bullets < currentWeapon.maxBullets)
        {
            if (Input.GetButtonDown("Reload"))
            {
                weaponManager.Reload();
                return;
            }
        }

        if (currentWeapon == null)
        {
            Debug.Log("Weapon is null");
        }

        if (currentWeapon.fireRate <= 0f)
        {
            if (Input.GetButtonDown("Fire1"))
            {
                Shoot();
            }
        }
        else
        {
            if (Input.GetButtonDown("Fire1"))
            {
                InvokeRepeating("Shoot", 0f, 1f / currentWeapon.fireRate);
            }
            else if (Input.GetButtonUp("Fire1"))
            {
                CancelInvoke("Shoot");
            }
        }
    }
Beispiel #16
0
 public void Shot()
 {
     if (Input.GetButton("Shot"))
     {
         WM.Shot();
     }
     if (Input.GetButtonDown("Reload"))
     {
         WM.Reload();
     }
 }
Beispiel #17
0
    //Called every Frame
    void Update()
    {
        //Debug.Log(shooting);
        currentWeapon = weaponManager.GetCurrentWeapon();

        if (PauseMenu.IsOn)
        {
            return;
        }

        if (currentWeapon.ammo < currentWeapon.maxAmmo)
        {
            if (Input.GetButtonDown("Reload"))
            {
                weaponManager.Reload();
                return;
            }
        }

        if (currentWeapon.fireRate <= 0f)
        {
            if (Input.GetButtonDown("Fire1"))
            {
                Shoot();
            }
        }
        else
        {
            if (Input.GetButtonDown("Fire1"))
            {
                InvokeRepeating("Shoot", 0f, 1f / currentWeapon.fireRate);
            }
            else if (Input.GetButtonUp("Fire1"))
            {
                CancelInvoke("Shoot");
                shooting = false;
            }
        }
    }
Beispiel #18
0
    void Update()
    {
        currentWeapon = weaponManager.GetCurrentWeapon();

        // if controll blocked, then function stops here
        if (blockedControll)
        {
            return;
        }

        if (currentWeapon != null && currentWeapon.bullets < currentWeapon.maxBullets)
        {
            if (Input.GetButtonDown("Reload"))
            {
                weaponManager.Reload();
                return;
            }
        }

        if (currentWeapon != null && currentWeapon.fireRate <= 0f)
        {
            if (Input.GetButtonDown("Fire1"))
            {
                Shoot();
            }
        }
        else if (currentWeapon != null)
        {
            if (Input.GetButtonDown("Fire1"))
            {
                InvokeRepeating("Shoot", 0f, 1f / currentWeapon.fireRate);
            }
            else if (Input.GetButtonUp("Fire1"))
            {
                CancelInvoke("Shoot");
            }
        }
    }
Beispiel #19
0
    void Update()
    {
        currentWeapon = weaponManager.GetCurrentWeapon();

        if (PauseGame.isOn) //Pausemode on validation
        {
            return;
        }

        if (currentWeapon.bullets < currentWeapon.maxBullets)
        {
            if (Input.GetButtonDown("Reload"))//Reload function if R key is pressed
            {
                weaponManager.Reload();
                return;
            }
        }


        if (currentWeapon.fireRate <= 0f)
        {
            if (Input.GetButtonDown("Fire1"))
            {
                Shoot();
            }
        }
        else
        {
            if (Input.GetButtonDown("Fire1"))
            {
                InvokeRepeating("Shoot", 0f, 1f / currentWeapon.fireRate);
            }
            else if (Input.GetButtonUp("Fire1"))
            {
                CancelInvoke("Shoot");
            }
        }
    }
Beispiel #20
0
    void Update()
    {
        currWeapon = weaponManager.GetCurrWeapon();
        //tes = weaponManager.GetCurrProjectile();

        if (PauseMenu.isOn)
        {
            return;
        }

        if (currWeapon.currBullets < currWeapon.maxBullets)
        {
            if (Input.GetKeyDown(KeyCode.R))
            {
                weaponManager.Reload();
                return;
            }
        }

        if (currWeapon.fireRate <= 0f)
        {
            if (Input.GetButtonDown("Fire1"))
            {
                Shoot();
            }
        }
        else
        {
            if (Input.GetButtonDown("Fire1"))
            {
                InvokeRepeating("Shoot", 0f, 1f / currWeapon.fireRate);
            }
            else if (Input.GetButtonUp("Fire1"))
            {
                CancelInvoke("Shoot");
            }
        }
    }
Beispiel #21
0
        private void OnEnable()
        {
            // Weapon
            Controller.Controls.Player.Reload.performed += ctx => Manager.Reload();
            Manager.FinishedSwitching += WeaponControls.SetWeaponOptions;
            Controller.Controls.Player.Fire.performed   += ctx => Manager.CurrentWeapon?.GetMechanism().Trigger(true);
            Controller.Controls.Player.Fire.canceled    += ctx => Manager.CurrentWeapon?.GetMechanism().Trigger(false);
            Controller.Controls.Player.Switch.started   += ctx => Manager.Scrolling(Controller.Controls.Player.Switch.ReadValue <Vector2>().y);
            Controller.Controls.Player.Special.started  += ctx => Manager.CurrentWeapon?.GetMechanism().SecondaryButton(true);
            Controller.Controls.Player.Special.canceled += ctx => Manager.CurrentWeapon?.GetMechanism().SecondaryButton(false);
            WeaponControls.SetWeaponOptions();

            Controller.Controls.Player.Break.performed += ctx => VehicleControl.Break();
        }
Beispiel #22
0
    void Update()
    {
        _currentWeapon = _weaponManager.GetCurrentWeapon();

        if (GameManager.Instance.IsMenuOpened)
        {
            return;
        }

        if (_currentWeapon.bullets < _currentWeapon.maxBullets)
        {
            if (Input.GetKeyDown(KeyCode.R))
            {
                _weaponManager.Reload();
                return;
            }
        }

        if (_currentWeapon.fireRate <= 0f)
        {
            if (Input.GetButtonDown("Fire1"))
            {
                Shoot();
            }
        }
        else
        {
            if (Input.GetButtonDown("Fire1"))
            {
                InvokeRepeating("Shoot", 0f, 1f / _currentWeapon.fireRate);
            }
            else if (Input.GetButtonUp("Fire1"))
            {
                CancelInvoke("Shoot");
            }
        }
    }
Beispiel #23
0
    private void Update()

    {
        currentweapon = weaponManager.getCurrentWeapon();

        if (PauseMenu.isOn)
        {
            return;
        }
        if (currentweapon.ammo < currentweapon.maxAmmos)
        {
            if (Input.GetKeyDown(KeyCode.R))
            {
                weaponManager.Reload();
                return;
            }
        }

        if (currentweapon.fireRate <= 0f)
        {
            if (Input.GetButtonDown("Fire1"))
            {
                Shoot();
            }
        }
        else
        {
            if (Input.GetButtonDown("Fire1"))
            {
                InvokeRepeating("Shoot", 0f, 1f / currentweapon.fireRate);
            }
            else if (Input.GetButtonUp("Fire1"))
            {
                CancelInvoke("Shoot");
            }
        }
    }
Beispiel #24
0
    void Shoot()
    {
        if (!isLocalPlayer)
        {
            return;
        }
        if (currentWeapon.bullets <= 0)
        {
            weaponManager.Reload();
            Debug.Log("out of bullets");
            return;
        }



        Animator anim = weaponHolder.GetComponentInChildren <Animator>();

        anim.SetBool("bFire", true);
        GetComponent <AudioSource>().Play();
        currentWeapon.bullets--;
        CmdOnShoot();
        Debug.Log("Remaining bullets " + currentWeapon.bullets);
        Debug.Log("SHOOT");
        RaycastHit _hit;

        if (Physics.Raycast(cam.transform.position, cam.transform.forward, out _hit, currentWeapon.range, mask))
        {
            if (_hit.collider)
            {
                Debug.Log("hit " + _hit.collider.tag);
                if (_hit.collider.tag == PLAYER_TAG && _hit.collider.name != GetComponentInChildren <UnityStandardAssets.Characters.FirstPerson.FirstPersonController>().transform.name)
                {
                    CmdPlayerShot(_hit.collider.name, currentWeapon.damage, GetComponentInChildren <UnityStandardAssets.Characters.FirstPerson.FirstPersonController>().transform.name);
                    Debug.Log(GetComponentInChildren <UnityStandardAssets.Characters.FirstPerson.FirstPersonController>().transform.name + " shoot " + _hit.collider.name);
                }
            }
            // We hit something, call the OnHit method on the server
            //CmdOnHit(_hit.point, _hit.normal);
        }
    }
Beispiel #25
0
    private void ProcessInput()
    {
        bool shootInput = Weapon.auto && Input.GetButton("Fire1") || Input.GetButtonDown("Fire1");

        shootCooldown -= Time.deltaTime;

        if (!weaponManager.IsReloading && shootCooldown <= 0 && shootInput)
        {
            shootCooldown = Weapon.ShootCooldown;

            if (Weapon.Bullets > 0)
            {
                Shoot();
                Weapon.Shoot();
            }
        }

        bool reload = !weaponManager.IsReloading && (Weapon.Bullets == 0 || Input.GetKeyDown(KeyCode.R));

        if (reload)
        {
            weaponManager.Reload();
        }
    }
Beispiel #26
0
    void Update()
    {
        if (canCollect)
        {
            RaycastItem();
        }
        if (canInteract)
        {
            RaycastDoor();
            RaycastSyringe();
            RaycastDNA();
            RaycastPanel();
            RaycastPortal();
        }

        if (onConversation)
        {
            OnConversation(true);
            if (canSkip)
            {
                if (Input.GetButtonDown("Interact"))
                {
                    FindObjectOfType <Button>().PlayNext();
                    FindObjectOfType <NPCDialogue>().DisplayNextSentence();
                }
            }
        }

        if (canOpenInv)
        {
            if (Input.GetButtonDown("Open Inventory"))
            {
                if (!uiManager.GetInventoryVisible())
                {
                    uiManager.ShowInventory(true);
                }
                else
                {
                    uiManager.ShowInventory(false);
                }
            }
            if (Input.GetButtonDown("Cancel"))
            {
                if (uiManager.GetInventoryVisible())
                {
                    uiManager.ShowInventory(false);
                }
            }
        }

        if (canEsc)
        {
            if (Input.GetButtonDown("Cancel"))
            {
                if (!uiManager.GetMenuVisible())
                {
                    uiManager.ShowMenu(true);
                }
                else if (uiManager.GetMenuVisible())
                {
                    uiManager.ShowMenu(false);
                }
            }
        }

        if (canEquipWep)
        {
            if (Input.GetKeyDown(KeyCode.Alpha1))
            {
                EquipWeaponInSlot(0);
            }
            else if (Input.GetKeyDown(KeyCode.Alpha2))
            {
                EquipWeaponInSlot(1);
            }
            else if (Input.GetKeyDown(KeyCode.Alpha3))
            {
                EquipWeaponInSlot(2);
            }
            else if (Input.GetKeyDown(KeyCode.Alpha4))
            {
                EquipWeaponInSlot(3);
            }
            else if (Input.GetKeyDown(KeyCode.Alpha5))
            {
                EquipWeaponInSlot(4);
            }
        }

        if (canShoot)
        {
            if (Input.GetButtonDown("Fire1"))
            {
                if (player.GetWeapon() != null)
                {
                    weaponManager.Fire();
                }
            }
            else if (Input.GetButton("Fire1"))
            {
                if (player.GetWeapon() != null)
                {
                    if (player.GetWeapon().WeaponType == WeaponEnum.AssaultRifle)
                    {
                        weaponManager.Fire();
                    }
                }
            }
            else if (Input.GetButtonDown("Reload"))
            {
                if (player.GetWeapon() != null)
                {
                    weaponManager.Reload();
                }
            }
        }

        #region Cheat
        if (Input.GetKeyDown(KeyCode.Keypad0))
        {
            WeaponManager.instance.GetComponent <Pistol>().CurrentSpare += 666;
            WeaponManager.instance.GetComponent <Pistol>().Damage        = 100;
        }
        if (Input.GetKeyDown(KeyCode.Keypad1))
        {
            player.GetPoisonState().tempPoisonTime = 10;
        }
        if (Input.GetKeyDown(KeyCode.Keypad2))
        {
            WeaponManager.instance.GetComponent <Sedat>().CurrentSpare += 666;
            WeaponManager.instance.GetComponent <Sedat>().Damage        = 10;
        }
        #endregion
    }
Beispiel #27
0
 private void Reload()
 {
     weaponManager.Reload();
 }
Beispiel #28
0
    private void Update()
    {
        currentWeapon = weaponManager.GetCurrentWeapon();

        if (currentWeapon == null)
        {
            return;
        }

        if (PauseMenu.isOn)
        {
            return;
        }

        if (isLocalPlayer)
        {
            //Weapon switching keycodes
            if (Input.GetKeyDown(KeyCode.Alpha1))
            {
                weaponManager.CmdSwitchWeapon(1);
                return;
            }
            if (Input.GetKeyDown(KeyCode.Alpha2))
            {
                weaponManager.CmdSwitchWeapon(2);
                return;
            }
            if (Input.GetKeyDown(KeyCode.Alpha3))
            {
                weaponManager.CmdSwitchWeapon(3);
                return;
            }
            if (Input.GetKeyDown(KeyCode.Alpha4))
            {
                weaponManager.CmdSwitchWeapon(4);
                return;
            }
        }

        //Only allows reloading if the clip is not full
        if (currentWeapon.bullets < currentWeapon.maxBullets && Input.GetButton("Reload"))
        {
            weaponManager.Reload();
            return;
        }

        if (weaponManager.currentWeaponIndex == 3)
        {
            if (Input.GetButtonDown("Fire2"))
            {
                defaultFOV = mainCamera.fieldOfView;
                weaponCamera.SetActive(false);
                mainCamera.fieldOfView = zoomedInFOV;
            }
            if (Input.GetButtonUp("Fire2"))
            {
                weaponCamera.SetActive(true);
                mainCamera.fieldOfView = defaultFOV;
            }
        }

        //If a weapon has a fire rate of 0f then it is not automatic and requires
        //a button press for every shot made
        if (currentWeapon.fireRate <= 0f)
        {
            //Checking if enough time has passed since the last shot made by
            //manual weapons
            if (Input.GetButtonDown("Fire1") && (Time.time - lastShotTime) > currentWeapon.manualShootingFireRate)
            {
                Shoot();
            }
        }
        else
        {
            if (Input.GetButtonDown("Fire1"))
            {
                //Automatic weapons are shooting as long as the fire button is pressed
                InvokeRepeating("Shoot", 0f, currentWeapon.fireRate);
            }
            else if (Input.GetButtonUp("Fire1"))
            {
                CancelInvoke("Shoot");
            }
        }
    }
Beispiel #29
0
    // Update is called once per frame
    void Update()
    {
        if (PauseMenu.isOn || !isLocalPlayer)
        {
            return;
        }

        if (currentWeapon.bullets < currentWeapon.maxBullets)
        {
            if (Input.GetButton("Reload") && !GameManager.instance.chatSelected)
            {
                if ((inventory.ammo - currentWeapon.bullets) > 0)
                {
                    weaponManager.Reload();
                }
            }
        }

        // Aim Down Sight
        if (Input.GetButtonDown("ADS"))
        {
            if (ads)
            {
                // Zoom out
                weaponCameraAnim.SetBool("Scoped_b", !ads);
                crosshair.SetBool("Scoped_b", !ads);
                if (currentWeapon.weaponType == 5)
                {
                    sniperScope.SetActive(false);
                    weaponCamera.gameObject.SetActive(true);
                    weaponCameraAnim.SetInteger("Weapon_int", currentWeapon.weaponType);
                    cam.fieldOfView = normalFOV;
                }
            }
            else
            {
                // Zoom in
                weaponCameraAnim.SetBool("Scoped_b", !ads);
                crosshair.SetBool("Scoped_b", !ads);
                if (currentWeapon.weaponType == 5)
                {
                    StartCoroutine(SniperScope());
                }
            }
            ads = !ads;
        }

        // Automatic weapon
        if (currentWeapon.auto)
        {
            if (Input.GetButton("Fire1") && Time.time >= shootCooldown)
            {
                shootCooldown = Time.time + 1f / currentWeapon.fireRate;
                Shoot();
            }
            // Non-auto weapon
        }
        else
        {
            if (Input.GetButtonDown("Fire1") && Time.time >= shootCooldown)
            {
                shootCooldown = Time.time + 1f / currentWeapon.fireRate;
                Shoot();
            }
        }

        // Recoil
        weaponHolder.localPosition = Vector3.SmoothDamp(weaponHolder.localPosition, weaponHolderOrigin, ref recoilSmoothDampVelocity, recoilSettleTime);
        recoilAngle = Mathf.SmoothDamp(recoilAngle, 0, ref recoilRotSmoothDampVelocity, recoilRotateSettleTime);
        weaponHolder.localEulerAngles = weaponInitialAngle + Vector3.down * recoilAngle;
        camParent.localEulerAngles    = Vector3.left * recoilAngle / 10f;
    }