using System.Collections; using System.Collections.Generic; using UnityEngine; public class BaGua_LiGua : MonoBehaviour { public float intervalTime; //造成伤害的间隔时间 public int damage; //造成的伤害 public List moveCharacrters = new List(); //被造成伤害的角色 public float totalTime; //多少时间后消失 [HideInInspector]public float time; //经过的时间 private void Update() { time += Time.deltaTime; if (time >= totalTime) { gameObject.SetActive(false); } } private void OnTriggerEnter(Collider other) { BeHitTrigger beHitTrigger = other.GetComponent(); if (beHitTrigger != null) { if (other.gameObject.layer == 8 || other.gameObject.layer == 16 || other.gameObject.layer == 10) { MoveCharacter character = other.GetComponentInParent(); moveCharacrters.Add(character); character.sustainedInjuryTime = intervalTime; character.sustainedInjury_IntervalTime = intervalTime; character.sustainedInjury_damage = damage; character.isSustainedInjury = true; } } } private void OnTriggerExit(Collider other) { BeHitTrigger beHitTrigger = other.GetComponent(); if (beHitTrigger != null) { if (other.gameObject.layer == 8 || other.gameObject.layer == 16) { MoveCharacter character = other.GetComponentInParent(); if (moveCharacrters.Exists(i => i == character)) { character.isSustainedInjury = false; moveCharacrters.Remove(character); } } } } private void OnDisable() { for(int i= 0; i < moveCharacrters.Count; i++) { moveCharacrters[i].isSustainedInjury = false; } } }