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); }
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); }
/// <summary> /// 释放 /// </summary> public virtual void OnRelease() { m_CrossSightInfo = null; ClearVariate(); if (m_CrossSightLoic != null) { m_CrossSightLoic.Release(); } }
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); }
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); } }
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); } }
/// <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(); }
public virtual void Release() { m_crosssightinfo = null; m_ballisticOffsetFunc = null; IsChangCheckDirection = false; }