/// <summary> /// aoe类型的buff需要检测更新生效的actor /// </summary> public void UpdateEffectActorList() { if (mBuffCfg.mEffectRangeType != EffectRangeType.Aoe) { return; } //检查上一次的受击者是否离开范围,并且移除 foreach (var actor in mEfxActors) { if (!IsInEfxRange(actor.CacheTransform.position)) { actor.GetBuffCmpt().RemoveBuff(this); } } ActorSide ownActorSide = OwnActor.GetActorSide(); //todo 包围盒子配置 var halfSize = new Vector3(mBuffCfg.mEffectRange, 1, mBuffCfg.mEffectRange); var overlapBox = Physics.OverlapBox(OwnActor.CacheTransform.position, halfSize, Quaternion.identity, SystemPreset.layer_actor); foreach (var collider in overlapBox) { var targetActor = collider.GetComponent <GameActor>(); var sideRelation = Toolkit.GetSideRelation(ownActorSide, targetActor.GetActorSide()); if (mBuffCfg.IsInEffectRelation(sideRelation)) { if (!mEfxActors.Contains(targetActor)) { AddBuffEffect(targetActor); mEfxActors.Add(targetActor); } } } }