public void Destroy() { if (ActorType.IsBoomWeapon()) { var data = _invariantAttributeComponent.GetBoomData(); var list = GetBody().CircleDetection(level.GetEnvirinfointernalBase().GetShipActors().ToBodyList(), data.boomdis); foreach (var ibody in list) { var actor = level.GetActor(((UserData)ibody.UserData).ActorID) as IShipComponentBaseContainer; if (actor == null) { continue; } ibody.Boom(GetPosition(), data.boomForce); if (actor.GetCamp() == GetCamp()) { return; } actor.GetHealthShieldinternalBase().LossBlood(GetWeaponDamage()); //Log.Trace("Collider: ID" + actor.GetActorID() + " 受到碰撞当前 血量:" + actor.GetHealthShieldinternalBase().GetHP() + " 护盾:" + actor.GetHealthShieldinternalBase().GetShieldNum()); } //Log.Trace("Collider ID" + ActorID + " Boom Data" + data.boomdis + " " + data.boomForce + " 爆炸目标数" + list.Count); } SetDeadState(true); level.AddEventMessagesToHandlerForward(new DestroyEventMessage(ActorID)); //Log.Trace("Destroy: 武器销毁" + ActorID + " 类型" + ActorType); _weaponEventComponent.Destroy(); }