/// <summary> /// attack procedure /// </summary> /// <param name="attack"></param> private void _attackCombo(bool attack) { #if DEBUG_INFO if (!m_Initialized) { Debug.LogError("Component not initialized < " + this.ToString() + " >"); return; } #endif bool isAttacking = m_Animator.GetBool(/*"pAttack1"*/ HashIDs.Attack1Bool); if (attack) { if (m_Character.isOnGround) { if (!m_Attack_combo_started && !isAttacking && !m_AttackStateUnderway) { IGameCharacter npc = m_PrimaryTargetNPC; #if TESTING_USE_ALL_NPC_ARRAY m_PrimaryTargetNPC = _getPrimaryTarget(); #else m_PrimaryTargetNPC = _getPrimaryTargetInZone(); #endif if (m_PrimaryTargetNPC != npc) { if (npc != null) { npc.attack_end_notify(this, 1); } } m_BreakCombo = false; m_Character.turnTransformToDirection(m_TargetDirection); m_Animator.SetBool(/*"pAttack1"*/ HashIDs.Attack1Bool, true); m_Attack_combo_started = true; if (m_PrimaryTargetNPC != null) { m_InCombat = true; if (enableJumpToTarget) { _jumpToTarget(); } } } else { m_BreakCombo = false; } } } }
/// <summary> /// attack procedure /// </summary> /// <param name="attack"></param> /// <param name="direction2cursor"></param> private void _attackCombo(bool attack, Vector3 direction2cursor) { #if DEBUG_INFO if (!m_Initialized) { Debug.LogError("Component not initialized < " + this.ToString() + " >"); return; } #endif bool isAttacking = m_TopDownPlayer.animator.GetBool(/*"pAttack1"*/ HashIDs.Attack1Bool); if (attack) { if (m_TopDownPlayer.character.isOnGround) { m_TopDownPlayer.stop(); m_TargetDirection = direction2cursor; float angleDiff = Vector3.Angle(m_PrevTargetDirection, m_TargetDirection); if (angleDiff > CHANGE_TARGET_ANGLE_BUFFER) { m_ChangeTarget = true; } m_PrevTargetDirection = m_TargetDirection; bool attackState = m_TopDownPlayer.animator.GetCurrentAnimatorStateInfo(0).IsName("AttackCombo"); if (!m_Attack_combo_started && !isAttacking && !attackState) { IGameCharacter npc = m_PrimaryTargetNPC; #if TESTING_USE_ALL_NPC_ARRAY m_PrimaryTargetNPC = _getPrimaryTarget(); #else m_PrimaryTargetNPC = _getPrimaryTargetInZone(); #endif if (m_PrimaryTargetNPC != npc) { if (npc != null) { npc.attack_end_notify(this, 1); } } m_BreakCombo = false; m_TopDownPlayer.character.turnTransformToDirection(m_TargetDirection); m_TopDownPlayer.animator.SetBool(/*"pAttack1"*/ HashIDs.Attack1Bool, true); m_Attack_combo_started = true; if (m_PrimaryTargetNPC != null) { m_InCombat = true; if (enableJumpToTarget) { _jumpToTarget(); } } } else { m_BreakCombo = false; } } } }