/// <summary> /// return to guard position state /// </summary> private void _return_state() { m_CurrentDest = m_StartPosition; m_Direction2target = m_CurrentDest - transform.position; m_Distance2target = m_Direction2target.magnitude; m_Direction2target.y = 0.0f; m_Direction2target.Normalize(); _calc_ranges(); m_Character.setMoveMode(TPCharacter.MovingMode.RotateToDirection); _calculate_path(ref m_Move); m_Move.y = 0.0f; m_Move *= m_Stats.DefaultMoveSpeed; m_BodyLookDir = m_Move; if (takingHit) { m_Move = Vector3.zero; m_BodyLookDir = Vector3.zero; } m_Character.move(m_Move, false, false, false, m_BodyLookDir, Vector3.zero); if (m_InAttackRange) { m_NpcState = NPCState.Idle; m_Character.setMoveMode(TPCharacter.MovingMode.RotateToDirection); m_Move = Vector3.zero; m_Character.fullStop(); m_OnStartPosition = true; } }