Пример #1
0
    void ShootBeam()
    {
        float spreadIncrement = (m_spreadFactor * 2) / m_shotsPerFire;

        for (int i = 0; i < m_shotsPerFire; i++)
        {
            float randAngle;
            if (m_evenSpread)
            {
                randAngle = -m_spreadFactor + (spreadIncrement * i);
            }
            else
            {
                randAngle = Random.Range(-m_spreadFactor, m_spreadFactor + 1.0f);
            }



            if (!isBeaming && currentBeams[i] == null)
            {
                Quaternion bulletRot = this.transform.rotation * Quaternion.Euler(0, 0, -randAngle);
                //Quaternion bulletRot = this.transform.rotation;

                GameObject bullet = (GameObject)Network.Instantiate(m_bulletRef, this.transform.position, bulletRot, 0);
                bullet.transform.parent     = this.transform;
                bullet.transform.localScale = new Vector3(bullet.transform.localScale.x, 0f, bullet.transform.localScale.z);
                bullet.GetComponent <BeamBulletScript>().SetOffset(m_bulletOffset);
                bullet.GetComponent <BeamBulletScript>().firer = transform.gameObject;

                GameStateController gsc = GameObject.FindGameObjectWithTag("GameController").GetComponent <GameStateController>();
                bullet.GetComponent <BeamBulletScript>().ParentBeamToFirer(gsc.GetNameFromNetworkPlayer(transform.parent.GetComponent <PlayerControlScript>().GetOwner()));
                currentBeams[i] = bullet;

                if (i >= (m_shotsPerFire - 1))
                {
                    isBeaming = true;
                }

                networkView.RPC("PlaySoundOverNetwork", RPCMode.All);
            }
        }
    }