public override void Execute() { if (Time.time > timeToCheck) { if (CheckNearObstacle() == true) { randomDirection = GenerateRandomDirection(); } timeToCheck = Time.time + 0.2f; } if (Time.time > timeToLook) { if (entity.LookForTarget() == true) { EnemyChaseState newState = new EnemyChaseState(); entity.stateMachine.ChangeState(newState); } else { timeToLook = Time.time + 1.0f; // While patroling takes more time to detect the player, because the enemy is cold. } } entity.Move(randomDirection, entity.patrolSpeed); }
// Use this for initialization void Start() { enemyChaseState = GetComponent <EnemyChaseState>(); enemyWanderState = GetComponent <EnemyWanderState>(); childSprite = transform.Find("Sprite").GetComponent <SpriteRenderer>(); CurrentState = enemyWanderState; CurrentState.OnStateEnter(this); }
private static EnemyChaseState _instance; //only declared once private EnemyChaseState() //set instance to itself { if (_instance != null) { return; } _instance = this; }
private void InitStates() { State = new FSM <EnemyState, BaseEnemyAIState>(); _idleState = new EnemyIdleState(this); _chaseState = new EnemyChaseState(this); State.Add(EnemyState.IDLE, _idleState); State.Add(EnemyState.CHASE, _chaseState); State.SetState(EnemyState.IDLE); }
private void MakeFSM() { mFSMSystem = new EnemyFSMSystem(); EnemyChaseState chaseState = new EnemyChaseState(mFSMSystem, this); chaseState.AddTransition(EnemyTransition.CanAttack, EnemyStateID.Attack); EnemyAttackState attackState = new EnemyAttackState(mFSMSystem, this); attackState.AddTransition(EnemyTransition.LostSoldier, EnemyStateID.Chase); mFSMSystem.AddState(chaseState, attackState); }
protected virtual void MakeFSM() { fsmSystem = new EnemySatateSystem(); EnemyChaseState chase = new EnemyChaseState(fsmSystem, this); chase.AddTransition(EnemyTransition.CanAttack, EnemyStateID.Attack); fsmSystem.AddState(chase); EnemyAttackState attack = new EnemyAttackState(fsmSystem, this); attack.AddTransition(EnemyTransition.LostSoldier, EnemyStateID.Chase); fsmSystem.AddState(attack); }
public override void MakeFSM() { EnemyPatrolState patrol = new EnemyPatrolState(); patrol.AddTransition(EntityTransition.TargetSpotted, EntityStateID.Chase); EnemyChaseState chase = new EnemyChaseState(); chase.AddTransition(EntityTransition.LostTarget, EntityStateID.Patrol); fsm = new EntityFSMSystem(); fsm.AddState(patrol); fsm.AddState(chase); }
private void MakeFsm() { Fsm = new EnemyFSMSystem(); EnemyChaseState chase = new EnemyChaseState(Fsm, this); chase.AddTransition(EnemyTransition.CanAttack, EnemyStateID.Attack); EnemyAttackState attack = new EnemyAttackState(Fsm, this); attack.AddTransition(EnemyTransition.LostSoldier, EnemyStateID.Chase); Fsm.AddState(chase, attack); }
public override void Execute() { if (Time.time > searchTime) { EnemyPatrolState newState = new EnemyPatrolState(); entity.stateMachine.ChangeState(newState); } if (!positionReached) { // Move to the last position where the target was seen... entity.Move(lastTargetPosition - entity.transform.position, entity.chaseSpeed); if (Vector3.Distance(lastTargetPosition, entity.transform.position) < 1.0f) { positionReached = true; directionToRotate = lastTargetDirection; timeToRotate = Time.time + 1.0f; } } else { // ... and look around from that position. if (Time.time > timeToRotate) { directionToRotate = Quaternion.Euler(0.0f, (Random.value > 0.5f) ? 90.0f : -90.0f, 0.0f) * entity.transform.forward; timeToRotate = Time.time + 2.0f; } entity.Move(directionToRotate, entity.chaseSpeed * 0.35f); } if (Time.time > timeToCheck) { if (entity.LookForTarget() == true) { EnemyChaseState newState = new EnemyChaseState(); entity.stateMachine.ChangeState(newState); } else { timeToCheck = Time.time + 0.4f; // Check with a moderated frecuency. } } }