using System; using System.Collections.Generic; using Cysharp.Threading.Tasks; using Main; using Stary.Evo; using UnityEngine; using YooAsset; namespace Main { public class PointController : MonoBehaviour, IController { public ZoneController ZoneController; private SphereCollider sphereCollider; private IUnRegister _onTriggerEnterUnRegister; private IUnRegister _onTriggerExitUnRegister; public void Init(ZoneController ZoneController, PointData pointData) { this.ZoneController = ZoneController; name = pointData.name; //根据数据设置zone 碰撞盒 transform.localPosition = pointData.position; transform.localRotation = Quaternion.Euler(pointData.rotation); transform.localScale = pointData.scale; sphereCollider = this.transform.GetOrAddComponent(); _onTriggerEnterUnRegister = this.OnTriggerEnterEvent(OnPointTriggerEnterEvent); _onTriggerExitUnRegister = this.OnTriggerExitEvent(OnPointriggerExitEvent); this.gameObject.SetActive(false); } public void OnPointTriggerEnterEvent(Collider collider) { if (collider.gameObject.CompareTag("MainCamera")) { // ZoneController.OpenPoint(this); Debug.Log("OnPointTriggerEnterEvent"); } } public void OnPointriggerExitEvent(Collider collider) { if (collider.gameObject.CompareTag("MainCamera")) { // ZoneController.OpenPoint(this); Debug.Log("OnPointTriggerEnterEvent"); } } public IArchitecture GetArchitecture() { return MainArchitecture.Interface; } } public class ZoneColliderEntity { public string Name { get; set; } public BoxCollider ZoneCollider { get; set; } public Func EntorComplete { get; set; } public Func ExitComplete { get; set; } public PointColliderEntity[] PointColliderEntities { get; set; } } public class PointColliderEntity { public string Name { get; set; } public bool IsTrigger { get; set; } public SphereCollider PointCollider { get; set; } public Func EntorComplete { get; set; } } }