| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- using ChivaXR;
- using Sirenix.OdinInspector;
- using System;
- using System.Collections.Generic;
- using UnityEngine;
- /// <summary>
- /// 步骤范围不能有重叠,如1-10,10-20。这样是不对的。
- /// 应该是1-10,11-20.
- /// </summary>
- public class ProcessEvent_CameraQuickMove : MonoBehaviour
- {
- [ListDrawerSettings]
- public List<CameraQuickMoveItem> DataList;
- int lastStepID = 1;
- void Awake()
- {
- ProcessManagement.Instance.processElementActiveEvent += ElementActiveEvent;
- }
- public void ElementActiveEvent(ProcessElement processElement)
- {
- int StepID = ProcessManagement.Instance.currentStepID;
- if (DataList.Count > 0)
- {
- int maxStep = 0;
- foreach(CameraQuickMoveItem item in DataList)
- {
- if (maxStep > item.MinStepID)
- continue;
- if ((lastStepID > item.MaxStepID || lastStepID < item.MinStepID)&&
- (StepID <= item.MaxStepID && StepID >= item.MinStepID))
- {
- Camera.main.GetComponent<RoamCameraController>().SetCameraState(item.TargetaPosition.position, item.TargetaPosition.eulerAngles);
- maxStep = item.MaxStepID;
- break;
- }
-
- }
- }
- lastStepID = StepID;
- }
- [Serializable]
- public class CameraQuickMoveItem
- {
- [LabelText("目标坐标")]
- public Transform TargetaPosition;
- [LabelText("最小范围")]
- public int MinStepID = 0;
- [LabelText("最大范围"),MinValue("MinStepID")]
- public int MaxStepID = 0;
- }
- }
|