コード例 #1
0
ファイル: AIBaseFunction.cs プロジェクト: wuhuolong/MaxBooks
    /// <summary>
    /// 巡逻
    /// </summary>
    /// <param name="currentIsCenterPos">当前坐标是否是巡逻中心点坐标</param>
    /// <returns></returns>
    public BehaviourReturnCode ActionPatrol(bool currentIsCenterPos)
    {
        if (RunningProperty.SelfActor is LocalPlayer)
        {
            // 定点挂机
            if (HookSettingManager.Instance.RangeType == EHookRangeType.FixedPos)
            {
                return(BehaviourReturnCode.Success);
            }
            // 副本类型控制表配置是否要巡逻
            else if (DBInstanceTypeControl.Instance.DoNotPatrol(InstanceManager.Instance.InstanceType, InstanceManager.Instance.InstanceSubType) == true)
            {
                return(BehaviourReturnCode.Success);
            }
        }

        BehaviourPatrolFiniteState patrolState = RunningProperty.AI.Machine.GetState <BehaviourPatrolFiniteState>(BehaviourMachine.State.PATROL);

        if (currentIsCenterPos)
        {
            patrolState.PresetCenterPos = RunningProperty.SelfActorPos;
        }

        RunningProperty.AI.Machine.SwitchToState(BehaviourMachine.State.PATROL);

        return(BehaviourReturnCode.Success);
    }
コード例 #2
0
    public BehaviourMachine(BehaviourAI ai)
    {
        mAI = ai;

        mStandState       = new BehaviourStandFiniteState(ai.RunningProperty);
        mWalkState        = new BehaviourWalkFiniteState(ai.RunningProperty);
        mAttackState      = new BehaviourAttackFiniteState(ai.RunningProperty);
        mRunState         = new BehaviourRunFiniteState(ai.RunningProperty);
        mChaseTargetState = new BehaviourChaseTargetFiniteState(ai.RunningProperty);
        mPatrolState      = new BehaviourPatrolFiniteState(ai.RunningProperty);
        mFollowState      = new BehaviourFollowFiniteState(ai.RunningProperty);
        mEmptyState       = new BehaviourEmptyFiniteState(ai.RunningProperty);
        mEscapeState      = new BehaviourEscapeFiniteState(ai.RunningProperty);

        mMachine.AddState(State.WALK, mWalkState);
        mMachine.AddState(State.RUN, mRunState);
        mMachine.AddState(State.STAND, mStandState);
        mMachine.AddState(State.ATTACK, mAttackState);
        mMachine.AddState(State.CHASETARGET, mChaseTargetState);
        mMachine.AddState(State.PATROL, mPatrolState);
        mMachine.AddState(State.FOLLOW, mFollowState);
        mMachine.AddState(State.EMPTY, mEmptyState);
        mMachine.AddState(State.ESCAPE, mEscapeState);
    }