/// <summary> /// 追击 /// </summary> void Pursuit() { if (mPursuitTarget == null || mObj.mIsDead) { return; } // 如果移动超出追击范围,回到初始点 if (UtilTools.Vec2Distance(mObj.mPosition, mObjInitPosition) > mMaxPursuitRange && mPursuitType != PursuitType.PursuitType_Back) { mPursuitType = PursuitType.PursuitType_Back; ChangeState(); return; } // 如果双方距离小于攻击距离,执行攻击操作 if (UtilTools.Vec2Distance(mObj, mPursuitTarget) <= mAttackRange && mPursuitType != PursuitType.PursuitType_Attack) { mPursuitType = PursuitType.PursuitType_Attack; ChangeState(); } // 否则,执行移动操作 else if (UtilTools.Vec2Distance(mObj, mPursuitTarget) > mAttackRange && UtilTools.Vec2Distance(mObj, mPursuitTarget) < mMaxPursuitRange && mPursuitType != PursuitType.PursuitType_Pursuit) { mPursuitType = PursuitType.PursuitType_Pursuit; ChangeState(); } }
/// <summary> /// 到达初始点,追击返回为false /// </summary> void OnArrive() { mPursuitType = PursuitType.PursuitType_Wait; ChangeState(); }