Example #1
0
    /// <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();
        }
    }
Example #2
0
 /// <summary>
 /// 到达初始点,追击返回为false
 /// </summary>
 void OnArrive()
 {
     mPursuitType = PursuitType.PursuitType_Wait;
     ChangeState();
 }