public override void Excute() { MsgDispatcher.SendMsg((int)MessageType.AnnounceAttack); //根据伤害优先级对伤害请求排序 DamageRequestList = DamageRequest.CaculateDamageRequestList(_Attacker, _AttackedUnit); for (int i = 0; i < DamageRequestList.Count; i++) { //优先级相同并且两方互打的伤害请求作为同时处理 if (i != DamageRequestList.Count - 1 && DamageRequestList[i].priority == DamageRequestList[i + 1].priority && DamageRequestList[i]._attacker == DamageRequestList[i + 1]._attackedUnit && DamageRequestList[i]._attackedUnit == DamageRequestList[i + 1]._attacker) { //判断被攻击者的反击距离 if (JudgeStrikeBack()) { DamageRequestList[i].ExcuteSameTime(); } else { DamageRequestList[i].Excute(); //距离不够,无法进行反击 } i++; } else if (!_AttackedUnit.IsDead() && !_Attacker.IsDead() && JudgeStrikeBack()) //符合反击要求 { DamageRequestList[i].Excute(); } else if (!_AttackedUnit.IsDead() && !_Attacker.IsDead() && !JudgeStrikeBack()) //距离不够,无法进行反击 { DamageRequestList[i].Excute(); i++; } } }
private DamageResponse TakeDamage(DamageRequest request, ICommandCallerInfo callerInfo) { int newHealth = HealthWriter.Data.currentHealth - 1000; HealthWriter.Send(new Health.Update().SetCurrentHealth(newHealth)); return(new DamageResponse(1000)); }
void Start() { mundo = GameObject.FindWithTag("Player").GetComponent <Mundo>(); damageReqest = GameObject.FindWithTag("UI").GetComponent <DamageRequest>(); knife = GetComponent <Rigidbody>(); knife.AddRelativeForce(Vector3.forward * 12, ForceMode.Impulse);//设置发射技能的力 m_Transform = GetComponent <Transform>(); InvokeRepeating("Rotation", 0, 0.01f); Destroy(gameObject, 0.6f); }
public void CreateSyncRequest() { PlayerSyncRequest = new GameObject("PlayerSyncRequest"); PlayerSyncRequest.AddComponent <MoveRequest>(). SetLocalPlayer(currentGameObject.transform, currentGameObject.GetComponent <PlayerMove>()). SetRemotePlayer(remotePlayerDict); shootRequest = PlayerSyncRequest.AddComponent <ShootRequest>(); shootRequest.playerManager = this; damageRequest = PlayerSyncRequest.AddComponent <DamageRequest>(); damageRequest.playerManager = this; }
public void GameOver() { GameObject.Destroy(currentGameObject); GameObject.Destroy(PlayerSyncRequest); GameObject.Destroy(remoteGameObject); remotePlayerDict.Clear(); //foreach (var item in remoteGameobject) //{ // GameObject.Destroy(item); //} //remoteGameobject.Clear(); shootRequest = null; damageRequest = null; }
void Start() { // 释放资源 UIManager.Instance.ClearAll(); ResourcesManager.Instance.ReleaseAll(); // 获取请求 m_InitComplete = GetComponent <InitCompleteRequest>(); m_DamageRequest = GetComponent <DamageRequest>(); m_HeroMoveRequest = GetComponent <HeroMoveRequest>(); m_BuyRequest = GetComponent <BuyItemRequest>(); m_UpgradeSkillRequest = GetComponent <UpgradeSkillRequest>(); m_UseSkillRequest = GetComponent <UseSkillRequest>(); m_EffectEndRequest = GetComponent <EffectEndRequest>(); // 加载资源 ResourcesManager.Instance.Load(Paths.UI_BUY, typeof(AudioClip)); // 发送进入游戏的请求 GetComponent <EnterBattleRequest>().SendRequest(); }
public override void Excute() { MsgDispatcher.SendMsg((int)TriggerType.AnnounceAttack); //根据伤害优先级对伤害请求排序 DamageRequestList = DamageRequest.CaculateDamageRequestList(_Attacker, _AttackedUnit); for (int i = 0; i < DamageRequestList.Count; i++) { //优先级相同并且两方互打的伤害请求作为同时处理 if (i != DamageRequestList.Count - 1 && DamageRequestList[i].priority == DamageRequestList[i + 1].priority && DamageRequestList[i]._attacker == DamageRequestList[i + 1]._attackedUnit && DamageRequestList[i]._attackedUnit == DamageRequestList[i + 1]._attacker) { DamageRequestList[i].ExcuteSameTime(); i++; } else { DamageRequestList[i].Excute(); } } }