using System.Threading.Tasks; using UnityEngine; namespace WS { [ObjectSystem] public class JumpToComponentLateUpdateSystem : LateUpdateSystem { public override void LateUpdate(JumpToComponent self) { self.LateUpdate(); } } public class JumpToComponent : OperateComponent { private GameObject start; ///音频实例 private VoiceEntity Voice; public override void Init() { } public override void StartOperate() { if (start == null) { start = GameObject.Instantiate(Resources.Load("Prefabs/TransferPoint")); } Voice = VoiceManager.Instance.Play(VoiceType.Voice, OperateData.audioName); switch (GameManager.Instance.Data.Pattern) { case PatternType.教学: break; case PatternType.练习: break; case PatternType.考核: break; } start.transform.position = OperateData.startPos; } public void LateUpdate() { //if (VRInputComponent.Instance.GetKeyUp(VRKey.圆盘, VRHand.Any)) //{ // if (Vector3.Distance(Player.Inst.transform.position, OperateData.startPos) <= 1f) // { // Player.Inst.transform.position = OperateData.endPos; // Player.Inst.transform.rotation = Quaternion.Euler(OperateData.endRot); // IsComplete = true; // } //} } public override Task StartState() { if (start == null) { start = GameObject.Instantiate(Resources.Load("Prefabs/TeleportPoint")); } start.gameObject.SetActive(true); Player.Inst.transform.position = OperateData.startPos; return Task.CompletedTask; } public override Task EndState() { if (start == null) { start = GameObject.Instantiate(Resources.Load("Prefabs/TeleportPoint")); } start.gameObject.SetActive(false); Player.Inst.transform.position = OperateData.endPos; Player.Inst.transform.rotation = Quaternion.Euler(OperateData.endRot); return Task.CompletedTask; } public override void Dispose() { if (start != null) { GameObject.Destroy(start); } base.Dispose(); if (Voice != null) { if (!Voice.IsDisposed) VoiceManager.Instance.Stop(Voice); Voice = null; } } public override void Update() { } } public class JumpToData { /// 起点 public Vector3 startPos; /// 终点 public Vector3 endPos; /// 起始旋转 public Vector3 startRot; /// 终点旋转 public Vector3 endRot; /// 起点名称 public string startName; /// 终点名称 public string endName; /// 音频 public string audioName; } }