Ejemplo n.º 1
0
    protected void Fire()
    {
        if (hammer.cocked && !barrel.isOut)
        {
            // check cylinder to be fired, check filled for fire / blank
            bool firedBullet = barrel.GetCurrentCylinder().Expel();
            hammer.Reset();
            if (firedBullet)
            {
                muzzleFlash.Flash();
                Camera.main.GetComponent <CameraBehavior>().Shake();
                audioSource.PlayOneShot(SoundManager.LoadSoundClip("shot" + Random.Range(1, 3)));

                Vector3 dir = (body.sightPoint - Camera.main.transform.position) * 100f;

                Debug.DrawRay(body.sightPoint, dir, Color.red, 100f);

                int        layerMask = 1 << LayerMask.NameToLayer("Enemies");
                RaycastHit hit       = new RaycastHit();
                if (Physics.Raycast(body.sightPoint, dir, out hit, 100f, layerMask))
                {
                    SlimeEnemy slime = hit.transform.gameObject.GetComponent <SlimeEnemy>();
                    slime.Damage(100);
                    score += 1;
                }
            }
            else
            {
                audioSource.PlayOneShot(SoundManager.LoadSoundClip("dryfire"));
            }
        }
    }