void Awake() { search = GetComponent <SearchingState>(); //we make search hold a reference of the SearchState script inASearch = false; //Set the searching state false by default attack = GetComponent <AttackingState>(); player = GameObject.FindGameObjectWithTag("Player"); }
private void SwitchToNormalAttack() { Move(MovementRef.PlayerPosition); CurrentAttackingState = AttackingState.NormalAttack; SwitchAttackTimer = Time.time + NormalAttackDuration; BodyRenderer.material.SetColor("_EmissiveColor", NormalColour); }
private Vector3 goalPos; //The current goal position void Awake() { //SEARCHING INSTANTIATION CODE search = GetComponent <SearchingState>(); //we make search hold a reference of the SearchState script inASearch = false; //Set the searching state false by default //GEMS INSTANTIATION CODE gemTracker = gemTrackerObject.GetComponent <GemTracker>(); //This is to allows us to keep track of gems gemPositions = new List <Vector3>(); //create new list of Vector3 positions for the gems searchNewGem = true; //set the searchNewGem to true upon start closestGem = new Vector3(); //SIGHT INSTANTIATION CODE sight = GetComponent <SightController>(); //ATTACKING INSTANTIATION CODE attack = GetComponent <AttackingState>(); player = GameObject.FindGameObjectWithTag("Player"); //HEALTH INSTANTIATION CODE health = GetComponent <NPC1Health>(); //CHASE INSTANTIATION CODE chasing = false; //PLAYER DETECTION INSTANTIATION CODE playerDetectionTimer = 3f; playerPos = new Vector3(); //FLEEING INSTATIATION CODE escapePos = new Vector3(); goalPos = new Vector3(); fleeing = false; }
private void Awake() { chasingState = new ChasingState(this); idleState = new EnemyIdleState(this); returningState = new ReturningState(this); attackingState = new AttackingState(this); visiblePlayers = new List <GameObject>(); returnPosition = new Vector3(transform.position.x, transform.position.y, transform.position.z); eyes = transform.FindChild("Eyes"); health = GetComponent <EnemyHealth>(); attack = GetComponent <EnemyAttack>(); sounds = GetComponent <EnemySoundController>(); animator = GetComponent <EnemyAnimationController>(); navMeshAgent = GetComponent <NavMeshAgent>(); isTargetting = false; if (transform.parent.CompareTag("EnemyMob")) { mobKnowledge = GetComponentInParent <EnemyMobKnowledge>(); } tm = GameObject.FindWithTag("TeamManager").GetComponent <TeamManager>(); }
private void ChangeToEventAttack() { int i = Random.Range(0, 100); CurrentAttackingState = i > 50f ? AttackingState.Spawning : AttackingState.StarAttack; NormalColour = BodyRenderer.material.GetColor("_EmissiveColor"); BodyRenderer.material.SetColor("_EmissiveColor", new Color32(255, 0, 83, 255)); playAttackSoundEffect = true; }
private void Start() { rb = gameObject.GetComponent <Rigidbody>(); floatingName.text = tankName; tankSide = TankSides.Enemy; patrolling = GetComponent <PatrollingState>(); attacking = GetComponent <AttackingState>(); currentState = patrolling; SetNewCoordinates(); }
public void HitBy(AttackingState attackingState) { Health--; bar.OnUpdate(Health); foreach (var mat in meshRenderer.materials) { mat.SetFloat(propName, Mathf.Lerp(zeroHealthVal, fullHealthVal, (float)Health / (float)StartingHealth)); } if (Health == 0) { Die(); } }
// Use this for initialization protected override void Awake() { base.Awake(); //Setup states PatrollingState patrollingState = gameObject.AddComponent <PatrollingState>(); patrollingState.SetNodes(m_patrollingNodes); patrollingState.SetMovementVelocity(m_forwardVelocity); MoveTowardsState moveTowardsState = gameObject.AddComponent <MoveTowardsState>(); moveTowardsState.SetMovementVelocity(m_forwardVelocity); InvestigateState investigateState = gameObject.AddComponent <InvestigateState>(); investigateState.SetMovementVelocity(m_forwardVelocity); IdleState idleState = gameObject.AddComponent <IdleState>(); idleState.SetRandomTime(m_idleMinTime, m_idleMaxTime); AttackingState attackingState = gameObject.AddComponent <AttackingState>(); FleeingState fleeingState = gameObject.AddComponent <FleeingState>(); fleeingState.SetMovementVelocity(m_forwardVelocity); fleeingState.SetFleeingMaxTime(m_fleeingMaxTime); //Assigning transitons patrollingState.AddInterruptTransition(TargetSightTransition.CreateComponent(gameObject, m_detectionRange), moveTowardsState); moveTowardsState.AddInterruptTransition(NotTransition.CreateComponent(gameObject, TargetSightTransition.CreateComponent(gameObject, m_detectionRange)), investigateState); moveTowardsState.AddInterruptTransition(TargetWithinRangeTransition.CreateComponent(gameObject, m_attackingRange), attackingState); investigateState.AddEndTransition(BaseTransition.CreateComponent(gameObject), idleState); investigateState.AddInterruptTransition(TargetSightTransition.CreateComponent(gameObject, m_detectionRange), moveTowardsState); idleState.AddEndTransition(BaseTransition.CreateComponent(gameObject), patrollingState); idleState.AddInterruptTransition(TargetSightTransition.CreateComponent(gameObject, m_detectionRange), moveTowardsState); attackingState.AddEndTransition(BaseTransition.CreateComponent(gameObject), fleeingState); fleeingState.AddEndTransition(BaseTransition.CreateComponent(gameObject), moveTowardsState); fleeingState.AddInterruptTransition(NotTransition.CreateComponent(gameObject, TargetWithinRangeTransition.CreateComponent(gameObject, m_fleeingDistance)), moveTowardsState); //Setup intial state GetComponent <StateManager>().SetInitialState(patrollingState); }
public override void ConfigFSM() { base.ConfigFSM(); states = new List <FSMState>(); //创建状态对象 //添加映射(AddMap)* //加入状态机 //-------------------- //随机移动 RandomMoveState randomMove = new RandomMoveState(); randomMove.AddMap(FSMTriggerID.ScoutedTargetIn, FSMStateID.Follow); randomMove.AddMap(FSMTriggerID.NoHealth, FSMStateID.Dead); states.Add(randomMove); //跟随 FollowState follow = new FollowState(); follow.AddMap(FSMTriggerID.ScoutedTargetOut, FSMStateID.RandomMove); follow.AddMap(FSMTriggerID.NoHealth, FSMStateID.Dead); follow.AddMap(FSMTriggerID.AttackTargetIn, FSMStateID.Attacking); states.Add(follow); //攻击 AttackingState attacking = new AttackingState(); attacking.AddMap(FSMTriggerID.AttackTargetOut, FSMStateID.Follow); attacking.AddMap(FSMTriggerID.NoHealth, FSMStateID.Dead); states.Add(attacking); //站立 IdleState idle = new IdleState(); //idle.AddMap(FSMTriggerID.) idle.AddMap(FSMTriggerID.NoHealth, FSMStateID.Dead); states.Add(idle); //死亡 DeadState dead = new DeadState(); states.Add(dead); }
//配置状态机 private void ConfigFSM() { states = new List <FSMState>(); IdleState idle = new IdleState(); idle.AddMap(FSMTriggerID.NoHealth, FSMStateID.Dead); idle.AddMap(FSMTriggerID.SawTarget, FSMStateID.Pursuit); states.Add(idle); DeadState dead = new DeadState(); states.Add(dead); PursuitState pursuit = new PursuitState(); pursuit.AddMap(FSMTriggerID.NoHealth, FSMStateID.Dead); pursuit.AddMap(FSMTriggerID.ReachTarget, FSMStateID.Attacking); pursuit.AddMap(FSMTriggerID.LoseTarget, FSMStateID.Default); states.Add(pursuit); AttackingState attacking = new AttackingState(); attacking.AddMap(FSMTriggerID.NoHealth, FSMStateID.Dead); attacking.AddMap(FSMTriggerID.WithoutAttackRange, FSMStateID.Pursuit); attacking.AddMap(FSMTriggerID.KilledTarget, FSMStateID.Default); states.Add(attacking); PatrollingState patrolling = new PatrollingState(); patrolling.AddMap(FSMTriggerID.NoHealth, FSMStateID.Dead); patrolling.AddMap(FSMTriggerID.SawTarget, FSMStateID.Pursuit); patrolling.AddMap(FSMTriggerID.CompletePatrol, FSMStateID.Idle); states.Add(patrolling); }
private void MakeFSM() { PatrollingState patrolling = new PatrollingState (this); patrolling.AddTransition(Transition.poiInSight, StateID.Chasing); patrolling.AddTransition(Transition.isDestroyed, StateID.Destroyed); ChasingState chasing = new ChasingState(this); chasing.AddTransition(Transition.poiLost, StateID.Patroling); chasing.AddTransition(Transition.poiInFireingRange, StateID.Attacking); chasing.AddTransition(Transition.isDestroyed, StateID.Destroyed); AttackingState attacking = new AttackingState(this); attacking.AddTransition(Transition.poiLost, StateID.Patroling); attacking.AddTransition(Transition.isDestroyed, StateID.Destroyed); DestroyedState destroyed = new DestroyedState(this); fsm = new FSMSystem(); fsm.AddState(patrolling); fsm.AddState(chasing); fsm.AddState(attacking); fsm.AddState(destroyed); }
private void Awake() { attackingState = new AttackingState(this); neutralState = new NeutralState(this); navMeshAgent = GetComponent <NavMeshAgent> (); }