예제 #1
0
    public override void Init()
    {
        base.Init();
        m_WeaponFireData = m_CfgEternityProxy.GetWeaponDataOfMissile(m_WeaponTable.TypeDateSheetld);

        m_CrossSightInfo = new CrossSightInfo();
        m_CrossSightInfo.m_MaxRayDistance  = m_SkillMaxDistance;
        m_CrossSightInfo.m_CrossSightShape = CrossSightShape.ConeSquare;
        m_CrossSightLoic = new CCrossSightLoic();
        m_CrossSightLoic = new CrossSightLoic_Improve_ConeSquare(m_CrossSightLoic);
        m_CrossSightLoic.SetCrossSightInfo(m_CrossSightInfo);

        float accuracy  = m_MainPlayer.GetWeaponAttribute(m_UId, crucis.attributepipeline.attribenum.AttributeName.kWeaponAccuracy);  //精准度
        float stability = m_MainPlayer.GetWeaponAttribute(m_UId, crucis.attributepipeline.attribenum.AttributeName.kWeaponStability); //稳定性

        // 表里配置的时间是毫秒
        m_LockonTimeParam = (m_WeaponFireData.LockTime - accuracy * m_WeaponFireData.TimeCoefficient) / 1000f;
        m_MaxMissileCountInOneShotParam = (int)(m_WeaponFireData.MagazineNumber + stability * m_WeaponFireData.MagazineQuantityCoefficient);
        m_ReticleHorizontalFOVParam     = m_WeaponFireData.AimingSize;
        m_ReticleAspect = m_WeaponFireData.AngleRange;
        if (m_ReticleAspect == 0)
        {
            Debug.LogWarning(string.Format("--------------------> 导弹类武器表 ID= {0},AngleRange = 0,策划确认下对吗? ", m_WeaponTable.TypeDateSheetld));
        }
        float fieldOfView = m_ReticleAspect == 0 ? 60 : m_ReticleHorizontalFOVParam / m_ReticleAspect;

        m_CrossSightLoic.ChangeVirtualCameraAttribute(fieldOfView, m_ReticleAspect);


        m_FireInterval = WeaponAndCrossSightFactory.CalculateFireInterval(m_MainPlayer, m_WeaponTable.TypeDateSheetld, m_UId, WeaponAndCrossSight.WeaponAndCrossSightTypes.Missile);
    }
예제 #2
0
    public override void Init()
    {
        base.Init();
        m_WeaponFireData = m_CfgEternityProxy.GetWeaponDataOfMachineGun(m_WeaponTable.TypeDateSheetld);
        m_CrossSightInfo = new CrossSightInfo();
        m_CrossSightInfo.m_MaxRayDistance  = m_SkillMaxDistance;
        m_CrossSightInfo.m_CrossSightShape = CrossSightShape.ConeSquare;
        m_CrossSightInfo.m_ConeSquareInfo.detectionMode = DetectionMode.All;
        m_CrossSightLoic = new CCrossSightLoic();
        m_CrossSightLoic = new CrossSightLoic_Improve_ConeSquare(m_CrossSightLoic);
        m_CrossSightLoic.SetCrossSightInfo(m_CrossSightInfo);
        m_CrossSightLoic.SetBallisticOffsetFunc(BallisticOffsetFunc, null);


        m_CurrentBulletCount = 0;                                                                                                          //子弹数
        m_Accuracy           = m_MainPlayer.GetWeaponAttribute(m_UId, crucis.attributepipeline.attribenum.AttributeName.kWeaponAccuracy);  //精准度
        m_Stability          = m_MainPlayer.GetWeaponAttribute(m_UId, crucis.attributepipeline.attribenum.AttributeName.kWeaponStability); //稳定性
        m_Aspect             = m_WeaponFireData.AngleRatio;


        m_CurrentHorizontalAngle = GetHorizontalAngle_Before();
        m_CurrentVerticalAngle   = m_Aspect == 0 ? m_CurrentHorizontalAngle : m_CurrentHorizontalAngle / m_Aspect;
        m_CrossSightLoic.ChangeVirtualCameraAttribute(m_CurrentHorizontalAngle, m_Aspect);

        m_FireInterval = WeaponAndCrossSightFactory.CalculateFireInterval(m_MainPlayer, m_WeaponTable.TypeDateSheetld, m_UId, WeaponAndCrossSight.WeaponAndCrossSightTypes.MachineGun);
    }
예제 #3
0
 /// <summary>
 /// 释放
 /// </summary>
 public virtual void OnRelease()
 {
     m_CrossSightInfo = null;
     ClearVariate();
     if (m_CrossSightLoic != null)
     {
         m_CrossSightLoic.Release();
     }
 }
예제 #4
0
 public override void Init()
 {
     base.Init();
     m_CrossSightInfo = new CrossSightInfo();
     m_CrossSightInfo.m_MaxRayDistance  = m_SkillMaxDistance;
     m_CrossSightInfo.m_CrossSightShape = CrossSightShape.CrossLine;
     m_CrossSightLoic = new CCrossSightLoic();
     m_CrossSightLoic = new CrossSightLoic_Improve_line(m_CrossSightLoic);
     m_CrossSightLoic.SetCrossSightInfo(m_CrossSightInfo);
 }
예제 #5
0
    public override void SetCrossSightInfo(CrossSightInfo crosssightinfo)
    {
        base.SetCrossSightInfo(crosssightinfo);

        //构建虚拟相机
        if (m_virtualCamera == null)
        {
            m_virtualCamera         = new GameObject("CrossSight VirtualCamera").AddComponent <Camera>();
            m_virtualCamera.enabled = false;
            GameObject.DontDestroyOnLoad(m_virtualCamera.gameObject);
        }
    }
예제 #6
0
    public override void Init()
    {
        base.Init();
        m_WeaponFireData = m_CfgEternityProxy.GetWeaponDataOfMining(m_WeaponTable.TypeDateSheetld);

        m_CrossSightInfo = new CrossSightInfo();
        m_CrossSightInfo.m_MaxRayDistance         = m_SkillMaxDistance;
        m_CrossSightInfo.m_CrossSightShape        = CrossSightShape.CrossLine;
        m_CrossSightInfo.m_LineInfo.detectionMode = DetectionMode.All;
        m_CrossSightLoic = new CCrossSightLoic();
        m_CrossSightLoic = new CrossSightLoic_Improve_line(m_CrossSightLoic);
        m_CrossSightLoic.SetCrossSightInfo(m_CrossSightInfo);

        m_FireInterval = WeaponAndCrossSightFactory.CalculateFireInterval(m_MainPlayer, m_WeaponTable.TypeDateSheetld, m_UId, WeaponAndCrossSight.WeaponAndCrossSightTypes.Mining);
    }
        /// <summary>
        /// 初始化
        /// </summary>
        /// <param name="coverAngle">锥体检测范围角度</param>
        /// <param name="rayCount">检测目标所用的射线数量</param>
        /// <param name="skillMaxDistance">技能的最大检测距离</param>
        public void Init(bool isSon, float maxSpreadAngle, float coverAngle, float rayCount, float skillMaxDistance, int SonCount)
        {
            IsSon            = isSon;
            m_MaxSpreadAngle = maxSpreadAngle;
            m_CoverAngle     = coverAngle;
            m_RayCount       = rayCount;
            m_SonCount       = SonCount;

            m_CCrossSightLoicList.Clear();
            for (int i = 0; i < m_RayCount; i++)
            {
                CrossSightInfo crossSightInfo = new CrossSightInfo();
                crossSightInfo.m_MaxRayDistance         = skillMaxDistance;
                crossSightInfo.m_CrossSightShape        = CrossSightShape.CrossLine;
                crossSightInfo.m_LineInfo.detectionMode = DetectionMode.All;
                CCrossSightLoic crossSightLoic = new CCrossSightLoic();
                crossSightLoic = new CrossSightLoic_Improve_line(crossSightLoic);
                crossSightLoic.SetCrossSightInfo(crossSightInfo);
                m_CCrossSightLoicList.Add(crossSightLoic);
            }
        }
예제 #8
0
 /// <summary>
 /// 准星信息,弹道偏移函数委托
 /// </summary>
 /// <param name="crosssightinfo"></param>
 /// <param name="ballisticOffsetFunc"></param>
 public virtual void SetCrossSightInfo(CrossSightInfo crosssightinfo)
 {
     m_crosssightinfo      = crosssightinfo;
     IsChangCheckDirection = false;
     //m_CheckDirection = CameraManager.GetInstance().GetMainCamereComponent().GetForward();
 }
예제 #9
0
 public virtual void Release()
 {
     m_crosssightinfo      = null;
     m_ballisticOffsetFunc = null;
     IsChangCheckDirection = false;
 }