public override void Execute() { AState stateMove = new StateMove(); car.State = stateMove; car.Execute(); }
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; }
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); }
protected void botMoveToWay(List <Vector3> way) { if (stateMove == StateMove.moveToPoint) { botMoveToPoint(way[0]); } if (stateMove == StateMove.nextPoint) { way.RemoveAt(0); stateMove = StateMove.moveToPoint; } }
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); } }
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>(); }
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; }