public override void Execute()
        {
            AState stateMove = new StateMove();

            car.State = stateMove;
            car.Execute();
        }
Exemple #2
0
    void Start()
    {
        _type     = UnitType.Enemy;
        _isMoving = false;
        InitAbility();

        _players       = new List <PlayerBehaviour>();
        _playerObjects = GameObject.FindGameObjectsWithTag("Player");
        foreach (var player in _playerObjects)
        {
            _players.Add(player.GetComponent <PlayerBehaviour>());
        }

        _animator = GetComponent <Animator>();

        _stateProcessor = new StateProcessor();
        StateIdle       = new StateIdle();      //待機状態
        StateSelect     = new StateSelect();    //選択状態
        StateMove       = new StateMove();      //移動状態
        StateAttack     = new StateAttack();    //攻撃状態
        StateIntercept  = new StateIntercept(); //傍受状態

        _stateProcessor.State       = StateIdle;
        StateIdle.execDelegate      = IdleUpdate;
        StateSelect.execDelegate    = SelectUpdate;
        StateMove.execDelegate      = MoveUpdate;
        StateAttack.execDelegate    = AttackUpdate;
        StateIntercept.execDelegate = InterceptUpdate;
    }
Exemple #3
0
    private void PlayAnimStateByDirection(Vector3 deltaVecor)
    {
        StateMove stateMove = StateMove.Idle;
        float     angleY    = Vector2.Angle(deltaVecor, Vector2.up);    //与y轴夹角
        float     angleX    = Vector2.Angle(deltaVecor, Vector2.right); //与x轴夹角

        //限制夹角在0-180
        if (angleY > 180)
        {
            angleY = 360 - angleY;
        }
        if (angleX > 180)
        {
            angleX = 360 - angleX;
        }
        if (angleY <= angleIncluded)
        {
            stateMove = StateMove.Back;
        }
        else if (angleY >= (180 - angleIncluded))
        {
            stateMove = StateMove.Forward;
        }
        else if (angleX <= angleIncluded)
        {
            stateMove = StateMove.Right;
        }
        else if (angleX >= (180 - angleIncluded))
        {
            stateMove = StateMove.Left;
        }
        else if (angleY > angleIncluded && angleY < (90 - angleIncluded))//左上或者右上
        {
            if (angleX > angleIncluded && angleX < (90 - angleIncluded))
            {
                stateMove = StateMove.RightTop;
            }
            else if (angleX > (90 + angleIncluded) && angleX < (180 - angleIncluded))
            {
                stateMove = StateMove.LeftTop;
            }
        }
        else if (angleY > (90 + angleIncluded) && angleY < (180 - angleIncluded))//左下或者右下
        {
            if (angleX > angleIncluded && angleX < (90 - angleIncluded))
            {
                stateMove = StateMove.RightBottom;
            }
            else if (angleX > (90 + angleIncluded) && angleX < (180 - angleIncluded))
            {
                stateMove = StateMove.LeftBottom;
            }
        }
        anim.Play(stateMove.ToString(), 0);
    }
Exemple #4
0
    protected void botMoveToWay(List <Vector3> way)
    {
        if (stateMove == StateMove.moveToPoint)
        {
            botMoveToPoint(way[0]);
        }

        if (stateMove == StateMove.nextPoint)
        {
            way.RemoveAt(0);
            stateMove = StateMove.moveToPoint;
        }
    }
Exemple #5
0
    void botMoveToPoint(Vector3 point)
    {
        var vectorMove = GetVectorMove(point, transform.position);

        if (ArounPoint(transform.position, point))
        {
            point.y            = 0;
            transform.position = point + new Vector3(0, transform.position.y, 0);

            stateMove = StateMove.nextPoint;
        }
        else
        {
            characterController.Move(vectorMove * speedBot * Time.deltaTime);
        }
    }
Exemple #6
0
    void Start()
    {
        if (m_fsm != null)
        {
            StateMove stateMove = new StateMove();
            StateIdle stateIdle = new StateIdle();
            stateIdle.AddTransition(FSMTransition.MOVE, FSMStateId.STATE_MOVE);
            stateMove.AddTransition(FSMTransition.STOP_MOVE, FSMStateId.STATE_IDLE);
            m_fsm.AddState(stateIdle);
            m_fsm.AddState(stateMove);
            m_fsm.CurrentState = stateIdle;
        }

        m_spatial = gameObject.GetComponent <Spatial>();
        m_fighter = gameObject.GetComponent <Fightable>();
    }
Exemple #7
0
    void Start()
    {
        if (m_fsm != null)
        {
            StateMove stateMove = new StateMove();
            StateIdle stateIdle = new StateIdle();
            stateIdle.AddTransition(FSMTransition.MOVE, FSMStateId.STATE_MOVE);
            stateMove.AddTransition(FSMTransition.STOP_MOVE, FSMStateId.STATE_IDLE);
            m_fsm.AddState(stateIdle);
            m_fsm.AddState(stateMove);
            m_fsm.CurrentState = stateIdle;
        }

        m_spatial = gameObject.GetComponent<Spatial>();
        m_fighter = gameObject.GetComponent<Fightable>();
    }
    public string tips()
    {
        StateMove statemove = GRAPH.getNextMove(STATE);
        string    tipstring;
        string    number = "";
        int       moveP  = statemove.P;
        int       moveD  = statemove.D;

        if (moveP != 0)
        {
            number += moveP.ToString();
            if (moveP > 1)
            {
                number += " Priests";
            }
            else
            {
                number += " Priest";
            }
        }
        if (moveD != 0)
        {
            if (moveP != 0)
            {
                number += " And ";
            }
            number += moveD.ToString();
            if (moveD > 1)
            {
                number += " Devils";
            }
            else
            {
                number += " Devil";
            }
        }

        if (boat.left)
        {
            tipstring = "Move " + number + " To Right";
        }
        else
        {
            tipstring = "Move " + number + " To Left";
        }
        return(tipstring);
    }
    void Start()
    {
        _type = UnitType.Player;

        _animator  = GetComponent <Animator>();
        _menuPanel = GameObject.FindGameObjectWithTag("Panel");
        _menuFlag  = false;

        InitAbility();

        _stateProcessor = new StateProcessor();
        StateIdle       = new StateIdle();      //待機状態
        StateSelect     = new StateSelect();    //選択状態
        StateMove       = new StateMove();      //移動状態
        StateAttack     = new StateAttack();    //攻撃状態
        StateIntercept  = new StateIntercept(); //傍受状態

        _stateProcessor.State       = StateIdle;
        StateIdle.execDelegate      = IdleUpdate;
        StateSelect.execDelegate    = SelectUpdate;
        StateMove.execDelegate      = MoveUpdate;
        StateAttack.execDelegate    = AttackUpdate;
        StateIntercept.execDelegate = InterceptUpdate;
    }