Beispiel #1
0
    void Update()
    {
        if (mObj == null || mObj.mIsDead)
        {
            mPursuitTarget = null;

            return;
        }

        if (mObjAnimatorComponent.GetInjuredState())
        {
            return;
        }

        // 如果当前有追击目标,执行追击操作
        if (mPursuitTarget != null)
        {
            Pursuit();
            return;
        }

        // 当前没有追击目标,开启巡逻模式
        mAoiListCount = mObj.mAOIList.Count;
        if (mAoiListCount < 1)
        {
            return;
        }

        for (int i = 0; i < mAoiListCount; ++i)
        {
            IObject obj = mObj.mAOIList[i];
            if (obj == null)
            {
                continue;
            }

            if (obj is CRoleObject)
            {
                if (UtilTools.Vec2Distance(obj, mObj) <= mMaxPursuitRange &&
                    mPursuitType != PursuitType.PursuitType_Back)
                {
                    mPursuitTarget = obj;
                }

                return;
            }
        }
    }