public override MsgPlayerWeaponCrosshair GetRelativeHeightOfReticle() { MsgPlayerWeaponCrosshair crosshair = new MsgPlayerWeaponCrosshair(); Camera cam = CameraManager.GetInstance()?.GetMainCamereComponent()?.GetCamera(); float horFOV = cam.fieldOfView * cam.aspect; float verFOV = cam.fieldOfView; if (cam != null) { //crosshair.HorizontalRelativeHeight = m_MainAreaCoverAngle / horFOV; //crosshair.VerticalRelativeHeight = m_MainAreaCoverAngle / verFOV; //crosshair.SubAimAreaRelativeHeight.Clear(); //crosshair.SubAimAreaScreenPosition.Clear(); //for (int iArea = 0; iArea < m_SubAimAreas.Count; iArea++) //{ // m_SubAimAreas[iArea].UpdateBaseRay(cam.transform.forward); // crosshair.SubAimAreaRelativeHeight.Add(new Vector2(m_SubAimAreas[iArea].CoverAngle / horFOV, m_SubAimAreas[iArea].CoverAngle / verFOV)); // crosshair.SubAimAreaScreenPosition.Add(cam.WorldToScreenPoint(cam.transform.position + m_SubAimAreas[iArea].GetBaseRay())); //} //crosshair.RemainingRestoreDuration = Mathf.Clamp(m_LastFireTime + m_RestoreDuration - Time.time, 0, float.MaxValue); return(crosshair); } else { return(base.GetRelativeHeightOfReticle()); } }
//protected override void MessageToTheChangeOfCrosShairSize(float delta) //{ // //空继承,防止 父类 update ,给覆盖 // //改为鼠标按下时,通知hud ,此时各个区域情况,由Hud 自己循环区域动画 //} protected override MsgPlayerWeaponCrosshair GetRelativeHeightOfReticle() { MsgPlayerWeaponCrosshair crosshair = new MsgPlayerWeaponCrosshair(); Camera cam = CameraManager.GetInstance()?.GetMainCamereComponent()?.GetCamera(); if (cam != null) { float horFOV = cam.fieldOfView * cam.aspect; float verFOV = cam.fieldOfView; for (int i = 0; i < m_AimAreaList.Count; i++) { AimArea aimArea = m_AimAreaList[i]; if (!aimArea.IsSon) { //主区域 crosshair.HorizontalRelativeHeight = aimArea.GetCoverAngle() / horFOV; crosshair.VerticalRelativeHeight = aimArea.GetCoverAngle() / verFOV; } } return(crosshair); } else { return(base.GetRelativeHeightOfReticle()); } }
/// <summary> /// 更新准星偏移 /// </summary> /// <param name="crosshair">MsgPlayerWeaponCrosshairScale</param> private void UpdateCrosshairOffset(MsgPlayerWeaponCrosshair crosshair) { //主准星的放大缩小 if (m_FrameBox != null && (crosshair.HorizontalRelativeHeight >= 0 || crosshair.VerticalRelativeHeight >= 0)) { //float x = Screen.width / 2 + crosshair.HorizontalRelativeHeight * Screen.width / 2; //float y = Screen.height / 2 + crosshair.VerticalRelativeHeight * Screen.height / 2; /* Vector2 screen = UIManager.Instance.ScreenSize; float x = Screen.width / 2 + crosshair.HorizontalRelativeHeight * screen.x / 2; float y = Screen.height / 2 + crosshair.VerticalRelativeHeight * screen.y / 2; Vector2 point; if (RectTransformUtility.ScreenPointToLocalPointInRectangle(m_FrameBox.parent.GetComponent<RectTransform>(), new Vector2(x, y), m_Camera, out point)) { m_FrameBox.sizeDelta = point * 2; } */ Vector2 screen = UIManager.Instance.ScreenSize; float x = Screen.width / 2 + crosshair.HorizontalRelativeHeight * screen.x / 2; float y = Screen.height / 2 + crosshair.VerticalRelativeHeight * screen.y / 2; Vector2 point; if (RectTransformUtility.ScreenPointToLocalPointInRectangle(m_Root.parent.GetComponent<RectTransform>(), new Vector2(x, y), m_Camera, out point)) { m_FrameBox.sizeDelta = point * 2; } m_Crosshair.gameObject.SetActive(true); MaxMissileCount = crosshair.MissileCountInOneShot; MissileLockTime = crosshair.MissileLockTime; } }
/// <summary> /// 通知Hud准星大小变化情况 /// </summary> /// <param name="delta"></param> protected virtual void MessageToTheChangeOfCrosShairSize(float delta) { Camera cam = CameraManager.GetInstance()?.GetMainCamereComponent()?.GetCamera(); if (cam != null) { MsgPlayerWeaponCrosshair crosshairOffset = GetRelativeHeightOfReticle(); GameFacade.Instance.SendNotification(NotificationName.PlayerWeaponCrosshairScale, crosshairOffset); } }
/// <summary> /// 把准星信息通知HUD /// </summary> public virtual void NotifyHUDCrosshair() { Camera cam = CameraManager.GetInstance()?.GetMainCamereComponent()?.GetCamera(); if (cam != null) { MsgPlayerWeaponCrosshair crosshairOffset = GetRelativeHeightOfReticle(); GameFacade.Instance.SendNotification(NotificationName.PlayerWeaponCrosshairScale, crosshairOffset); } }
public override void OnToggledToMainWeapon() { Camera cam = CameraManager.GetInstance()?.GetMainCamereComponent()?.GetCamera(); if (cam != null) { MsgPlayerWeaponCrosshair crosshairOffset = new MsgPlayerWeaponCrosshair(); crosshairOffset.HorizontalRelativeHeight = m_ReticleFOVParam / (cam.fieldOfView * cam.aspect); crosshairOffset.VerticalRelativeHeight = m_ReticleFOVParam / cam.fieldOfView; GameFacade.Instance.SendNotification(NotificationName.PlayerWeaponCrosshairScale, crosshairOffset); } }
public override MsgPlayerWeaponCrosshair GetRelativeHeightOfReticle() { MsgPlayerWeaponCrosshair crosshair = new MsgPlayerWeaponCrosshair(); Camera cam = CameraManager.GetInstance()?.GetMainCamereComponent()?.GetCamera(); if (cam != null) { crosshair.HorizontalRelativeHeight = m_ReticleFOVParam / (cam.fieldOfView * cam.aspect); crosshair.VerticalRelativeHeight = m_ReticleFOVParam / cam.fieldOfView; return(crosshair); } else { return(base.GetRelativeHeightOfReticle()); } }
/// <summary> /// 得到当前准星,水平/垂直相扩散对比例信息 /// </summary> protected override MsgPlayerWeaponCrosshair GetRelativeHeightOfReticle() { MsgPlayerWeaponCrosshair crosshair = new MsgPlayerWeaponCrosshair(); Camera cam = CameraManager.GetInstance()?.GetMainCamereComponent()?.GetCamera(); if (cam != null) { crosshair.HorizontalRelativeHeight = m_ReticleHorizontalFOVParam / (cam.fieldOfView * cam.aspect); crosshair.VerticalRelativeHeight = m_ReticleHorizontalFOVParam / m_ReticleAspect / cam.fieldOfView; crosshair.MissileCountInOneShot = m_MaxMissileCountInOneShotParam; crosshair.MissileLockTime = m_LockonTimeParam; return(crosshair); } else { return(base.GetRelativeHeightOfReticle()); } }
/// <summary> /// 得到当前准星,水平/垂直相扩散对比例信息 /// </summary> protected override MsgPlayerWeaponCrosshair GetRelativeHeightOfReticle() { m_CrossSightLoic.ChangeVirtualCameraAttribute(m_CurrentHorizontalAngle, m_Aspect); MsgPlayerWeaponCrosshair crosshair = new MsgPlayerWeaponCrosshair(); Camera cam = CameraManager.GetInstance()?.GetMainCamereComponent()?.GetCamera(); if (cam != null) { crosshair.HorizontalRelativeHeight = m_CurrentHorizontalAngle * 2 / (cam.fieldOfView * cam.aspect); crosshair.VerticalRelativeHeight = m_CurrentHorizontalAngle / m_Aspect * 2 / cam.fieldOfView; return(crosshair); } else { return(base.GetRelativeHeightOfReticle()); } }
/// <summary> /// 得到当前准星,水平/垂直相扩散对比例信息 /// </summary> protected virtual MsgPlayerWeaponCrosshair GetRelativeHeightOfReticle() { MsgPlayerWeaponCrosshair crosshair = new MsgPlayerWeaponCrosshair(); return(crosshair); }
/// <summary> /// 武器准星偏移 /// </summary> /// <param name="msg">MsgPlayerWeaponCrosshairScale</param> private void OnWeaponCrosshairOffset(MsgPlayerWeaponCrosshair crosshair) { UpdateCrosshairOffset(crosshair); }