Ejemplo n.º 1
0
    public void Shoot()
    {
        if (TimeToNextShot < Time.time && CurrentState == WeaponState.Weapon_Ready)
        {
            TimeToNextShot = Time.time + _f_TimeBetweenShots;

            Vector3 StartPoint = Camera.main.ViewportToWorldPoint(new Vector3(0.5f, 0.5f, 0.0f));

            RaycastHit Hit;

            if (Physics.Raycast(StartPoint, Camera.main.transform.forward, out Hit))
            {
                GameObject hitObject = Hit.transform.gameObject;

                ITakeDamage damageableObject = hitObject.GetComponent <ITakeDamage>();

                if (damageableObject != null)
                {
                    damageableObject.ApplyDamage(I_Damage);
                }

                Head head = hitObject.GetComponent <Head>();

                if (head != null)
                {
                    damageableObject = head.transform.parent.GetComponent <ITakeDamage>();

                    damageableObject.Kill();
                }
            }

            I_AmmoInGun--;
            float recoilAmount = Random.Range(_f_MinVerticalRecoilPerShot, _f_MaxVerticalRecoilPerShot);
            _v2_Recoil = WeaponTransform.eulerAngles + recoilAmount * Vector3.right;
            ApplyVerticalRecoil();
        }
    }