using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; //激活后在特定区域内才能拆卸的螺栓 public class ColliderActiveLuoShuan : SimpleLuoShuan { //是否在允许激活的区域内 bool inActiveArea; //该步骤是否激活 bool stepActive; ProcessEnum processName; UnityAction finshedEvent; private void OnTriggerEnter(Collider other) { if (other.gameObject.name == "ActiveArea")//进入允许交互区域 { inActiveArea = true; if (stepActive) { base.Active(processName, finshedEvent); } } } private void OnTriggerExit(Collider other) { if (other.gameObject.name == "ActiveArea")//退出允许交互区域 { inActiveArea = false; if (stepActive) { base.UnActive(processName); } } } //步骤激活时 public override void Active(ProcessEnum stepName, UnityAction nodeFinishedEvent) { stepActive = true; processName = stepName; finshedEvent = nodeFinishedEvent; if (inActiveArea)//在区域内 直接激活 base.Active(stepName, nodeFinishedEvent); } public override void UnActive(ProcessEnum stepName) { base.UnActive(stepName); stepActive = false; } }