/// <summary> /// 상태 딕셔너리 추가 /// **다른 곳에서는 수정이 안됨 /// **try~catch로는 null값으로 들어가서 catch 잡기가 불가능함 /// </summary> protected override void DictionarySetting() { base.DictionarySetting(); patrolState = GetComponent <AIPatrolState>(); chaseState = GetComponent <AIChaseState>(); attackState = GetComponent <AIAttackState>(); knockbackState = GetComponent <AIKnockBackState>(); deathState = GetComponent <AIDeathState>(); dictStateAction.Add(AIController.AIState.IDLE, this); dictStateAction.Add(AIController.AIState.PATROL, patrolState); dictStateAction.Add(AIController.AIState.CHASE, chaseState); dictStateAction.Add(AIController.AIState.ATTACK, attackState); dictStateAction.Add(AIController.AIState.KNOCKBACK, knockbackState); dictStateAction.Add(AIController.AIState.DEATH, deathState); // Debug.Log("접근끝"); climbState = GetComponent <AIClimbState>(); if (climbState != null) { dictStateAction.Add(AIController.AIState.CLIMB, climbState); } landState = GetComponent <AILandState>(); if (landState != null) { dictStateAction.Add(AIController.AIState.LAND, landState); } jumpState = GetComponent <AIJumpState>(); if (jumpState != null) { dictStateAction.Add(AIController.AIState.JUMP, jumpState); } spitState = GetComponent <AISpitState>(); if (spitState != null) { dictStateAction.Add(AIController.AIState.SPIT, spitState); } leapState = GetComponent <AILeapState>(); if (leapState != null) { dictStateAction.Add(AIController.AIState.LEAP, leapState); } rushState = GetComponent <AIRushState>(); if (rushState != null) { dictStateAction.Add(AIController.AIState.RUSH, rushState); } }
private void FixedUpdate() { if (cNetworkIdentity.isHost) { tick++; if (tick >= aiTickCount * SkillManager.instance.dictSkill[aiCon.aiInfo.skill.skillIds[activeSkillNum]].reboundTime * 16) { tick = 0; isSkill = false; isAction = false; CAIPacket _aiPacket = networkAITransmitor.GetAIPacket(); _aiPacket.SetAIAction(Global.AiAction.AttackEnd); networkAITransmitor.EndFullAction(); aiCon.EndActionCheckState(AIController.AIState.ATTACK); } } else { CAIPacket _aiPacket = networkAISyncor.GetSyncInfo(); if (_aiPacket == null) { return; } if (_aiPacket.m_Action == Global.AiAction.AttackEnd) { //attack 끝처리 isAction = false; _aiPacket.DeFlagAction(); networkAISyncor.CheckSyncEnd(_aiPacket); networkAISyncor.EndFullAction(); this.enabled = false; } else if (_aiPacket.m_Action == Global.AiAction.KnockBack) { //공격 캔슬 후 넉백처리 Vector3 _knockBackPos = _aiPacket.m_TargetPos; AIKnockBackState _knockbackState = GetComponent <AIKnockBackState>(); _knockbackState.GuestSkillAction(0, _knockBackPos); _aiPacket.DeFlagAngleV(); _aiPacket.DeFlagAiPos(); _aiPacket.DeFlagAction(); networkAISyncor.CheckSyncEnd(_aiPacket); this.enabled = false; } } }