/// <summary> /// 常规相机位的切换,根据需求pitch、yaw、distance维持不变 /// </summary> /// <param name="charView"></param> /// <param name="isAiming"></param> /// <param name="smoothTime"></param> public void SetCharacterView(CameraViewInfoCollection.CharacterView charView, bool isAiming = false, float smoothTime = 0.15f) { SetPendingViewInfo(m_ViewTarget, m_ViewInfoCollection != null ? m_ViewInfoCollection[charView] : null, smoothTime); // procedural view data, inherit current pitch,yaw,distance m_PendingVT.m_ViewInfo.pitch = m_CurVT.m_ViewInfo.pitch; m_PendingVT.m_ViewInfo.yaw = m_isWatching ? m_PendingVT.m_ViewInfo.yaw : m_CurVT.m_ViewInfo.yaw; // 观察模式下切换charView维持yaw不变 —— corner case m_PendingVT.m_ViewInfo.distance = m_CurVT.m_ViewInfo.distance; if (isAiming) { m_PendingVT.m_ViewInfo.rigOffset = m_PendingVT.m_ViewInfo.rigOffsetWhenAim; } }
public void EditorSetCharacterView(CameraViewInfoCollection.CharacterView charView, bool isAiming = false, float smoothTime = 0.15f) { SetCharacterView(charView, isAiming, smoothTime); curCharView = charView; }
/// <summary> /// 上层接口,初始化角色默认视角 /// </summary> /// <param name="InViewTarget"></param> /// <param name="InViewInfoCollection"></param> public void InitViewInfoCollection(Transform InViewTarget, CameraViewInfoCollection InViewInfoCollection, CameraViewInfoCollection.CharacterView defaultView = CameraViewInfoCollection.CharacterView.Run) { if (InViewTarget == null || InViewInfoCollection == null) { Debug.LogError("Camera Init: viewTarget == null || viewInfoProfile == null"); return; } m_ViewInfoCollection = InViewInfoCollection; m_ViewTarget = InViewTarget; InitViewInfo(m_ViewTarget, m_ViewInfoCollection != null ? m_ViewInfoCollection[defaultView] : null); }
private void EditorSetCharacterView(CameraViewInfoCollection.CharacterView charView, bool isAiming = false, float smoothTime = 0.15f) { cc.EditorSetCharacterView(charView, isAiming, smoothTime); RefreshViewInfoProperties(); }