void Shoot()
    {
        GunState gunState = gunParent.GetChild(inGameManager.currentWeaponIndex).GetComponent <GunState>();

        gunState.bulletSound();
        Transform  eyeCam = transform.Find("Cameras/Main Player Cam");
        RaycastHit hit    = new RaycastHit();

        if (Physics.Raycast(eyeCam.position, eyeCam.forward, out hit, 1000f, enemyLayer))
        {
            GameObject newHole = Instantiate(bulletHolePrefab, hit.point + hit.normal * 0.001f, Quaternion.identity);
            newHole.transform.LookAt(hit.point + hit.normal);
            Destroy(newHole, 5f);

            if (photonView.IsMine && hit.collider.gameObject.layer == 11)
            {
                Gun gun = inGameManager.GetCurrentEquipment() as Gun;
                if (gun == null)
                {
                    Debug.Log("BAD");
                    return;
                }
                GameObject enemy;
                if (hit.collider.gameObject.transform.parent)
                {
                    enemy = hit.collider.gameObject.transform.parent.gameObject;
                }
                else
                {
                    enemy = hit.collider.gameObject;
                }

                this.GetComponent <FaceoffPlayerHUD>().hitCrossHair();
                enemy.GetPhotonView().RPC("TakeDamage", RpcTarget.All, (int)gun.baseDamage, PhotonNetwork.LocalPlayer.ActorNumber);
            }
        }

        if (photonView.IsMine)
        {
            gunState = gunParent.GetChild(inGameManager.currentWeaponIndex).GetComponent <GunState>();
            gunState.ammoCount--;
            pHud.AmmoChanged(gunState.ammoCount, gunState.baseAmmo);
        }
    }
Exemple #2
0
    void Shoot()
    {
        Gun gun = inGameManager.getCurrentEquipment() as Gun;

        if (gun == null)
        {
            Debug.Log("BAD");
            return;
        }

        GunState gunState = gunParent.GetChild(inGameManager.currentWeaponIndex).GetComponent <GunState>();

        gunState.bulletSound();
        Transform eyeCam = transform.Find("Cameras/Main Player Cam");


        if (gun.isShotgun)
        {
            for (int i = 0; i < gun.pelletCount; i++)
            {
                var rad       = Random.Range(0, 360f) * Mathf.Deg2Rad;
                var spreadX   = Random.Range(0.0f, 0.1f) * Mathf.Cos(rad);
                var spreadY   = Random.Range(0.0f, 0.1f) * Mathf.Sin(rad);
                var deviation = new Vector3(spreadX, spreadY, 0);
                var dir       = deviation + eyeCam.forward;

                Debug.DrawRay(eyeCam.position, dir * gun.range, Color.blue, 5);
                RaycastHit hit = new RaycastHit();
                if (Physics.Raycast(eyeCam.position, dir, out hit, gun.range, enemyLayer))
                {
                    if (photonView.IsMine && hit.collider.gameObject.layer == 11)
                    {
                        GameObject enemy;
                        if (hit.collider.gameObject.transform.parent)
                        {
                            enemy = hit.collider.transform.root.gameObject;
                        }
                        else
                        {
                            enemy = hit.collider.gameObject;
                        }

                        this.GetComponent <PlayerHUD>().hitCrossHair();
                        if (enemy.tag == "Shambler")
                        {
                            enemy.GetPhotonView().RPC("TakeDamageShambler", RpcTarget.All, (int)gun.baseDamage, photonView.ViewID);
                        }
                        else
                        {
                            enemy.GetPhotonView().RPC("TakeDamage", RpcTarget.All, (int)gun.baseDamage);
                        }
                    }
                }
            }
        }
        else
        {
            RaycastHit hit = new RaycastHit();
            if (Physics.Raycast(eyeCam.position, eyeCam.forward, out hit, 1000f, enemyLayer))
            {
                if (photonView.IsMine && hit.collider.gameObject.layer == 11)
                {
                    GameObject enemy;
                    if (hit.collider.gameObject.transform.parent)
                    {
                        enemy = hit.collider.transform.root.gameObject;
                    }
                    else
                    {
                        enemy = hit.collider.gameObject;
                    }

                    this.GetComponent <PlayerHUD>().hitCrossHair();
                    if (enemy.tag == "Shambler")
                    {
                        enemy.GetPhotonView().RPC("TakeDamageShambler", RpcTarget.All, (int)gun.baseDamage, photonView.ViewID);
                    }
                    else
                    {
                        enemy.GetPhotonView().RPC("TakeDamage", RpcTarget.All, (int)gun.baseDamage);
                    }
                }
            }
        }

        if (photonView.IsMine)
        {
            gunState = gunParent.GetChild(inGameManager.currentWeaponIndex).GetComponent <GunState>();
            gunState.ammoCount--;
            pHud.AmmoChanged(gunState.ammoCount, gunState.baseAmmo);
        }
    }