示例#1
0
    public override void Init()
    {
        base.Init();

        m_WeaponFireData = m_CfgEternityProxy.GetWeaponDataOfShotgun(m_WeaponTable.TypeDateSheetld);
        float accuracy            = m_MainPlayer.GetWeaponAttribute(m_UId, crucis.attributepipeline.attribenum.AttributeName.kWeaponAccuracy);  //精准度
        float stability           = m_MainPlayer.GetWeaponAttribute(m_UId, crucis.attributepipeline.attribenum.AttributeName.kWeaponStability); //稳定性
        float m_SonMaxSpreadAngle = m_WeaponFireData.SonDiffusionAngle - accuracy * m_WeaponFireData.SonDiffusionAngleCoefficient;              //子区域偏移最大角度

        m_RestoreDuration = (m_WeaponFireData.RecoveryTime - stability * m_WeaponFireData.RecoveryTimeCoefficient) / 1000f;
        int sonCount = (int)m_WeaponFireData.SonNumber;


        AimArea mainAimArea = new AimArea();
        // 中心区域覆盖角度
        float MainAreaCoverAngle = m_WeaponFireData.CoreDiameterAngle - accuracy * m_WeaponFireData.CoreDiameterAngleCoefficient;
        int   mainRayCount       = m_WeaponFireData.CoreRadialNumber;

        mainAimArea.Init(false, 0, MainAreaCoverAngle, mainRayCount, m_SkillMaxDistance, sonCount);

        m_AimAreaList.Add(mainAimArea);

        //子区域
        for (int i = 0; i < sonCount; i++)
        {
            AimArea sonAimArea = new AimArea();

            // 子区域覆盖角度
            float SubAimAreaCoverAngle = m_WeaponFireData.SonDiameterAngle - accuracy * m_WeaponFireData.SonDiameterAngleCoefficient;
            int   sonRayCount          = m_WeaponFireData.SonRadialNumber;
            sonAimArea.Init(true, m_SonMaxSpreadAngle, SubAimAreaCoverAngle, sonRayCount, m_SkillMaxDistance, sonCount);
            m_AimAreaList.Add(sonAimArea);
        }

        m_FireInterval = WeaponAndCrossSightFactory.CalculateFireInterval(m_MainPlayer, m_WeaponTable.TypeDateSheetld, m_UId, WeaponAndCrossSight.WeaponAndCrossSightTypes.ShotGun);
    }