// Update is called once per frame void Update() { dt = Time.deltaTime; //--------------Put something to update-------// if (ps.isAlive()) { State = ps.UnitStatus; if (ps.ActivePower != null) { ps.ActivePower.runNavigatorUpdate(this); return; } if (State == PersonStatus.Status.Shocked) { SetSpeed(0f); } if (State == PersonStatus.Status.Idle) { Stop(); Patrolling(); } if (State == PersonStatus.Status.Calm) { if (Type == PatrolType.Patrol || Type == PatrolType.Fixed) { SetSpeed(WalkingSpeed); Patrolling(); } } if (State == PersonStatus.Status.Concerned) { SetSpeed(MiddleSpeed); Patrolling(); } if (State == PersonStatus.Status.Panicked) { SetSpeed(RunningSpeed); Panicking(); } } else { SetSpeed(0f); } }
/*This is ONLY to change the animation based on state change, do NOT add code related to powers or to fear calculation, register another event for that. * */ void OnStateChanged(PersonStatus.Status prev, PersonStatus.Status current) { if (current == PersonStatus.Status.Dead) { audio.Stop(); _anim.SetInteger("State", 0); Destroy(this.powerEffect); } if (current == PersonStatus.Status.Zombie) { audio.Stop(); SetSpeed(RunningSpeed); _anim.SetInteger("State", 6); } if (current == PersonStatus.Status.Calm) { audio.Stop(); SetSpeed(WalkingSpeed); _anim.SetInteger("State", 1); } if (current == PersonStatus.Status.Concerned) { audio.Stop(); SetSpeed(MiddleSpeed); _anim.SetInteger("State", 2); } if (current == PersonStatus.Status.Panicked) { audio.Stop(); SetSpeed(RunningSpeed); _anim.SetInteger("State", 3); } if (current == PersonStatus.Status.Shocked) { audio.Stop(); SetSpeed(0f); _anim.SetInteger("State", 4); } if (current == PersonStatus.Status.Idle) { audio.Stop(); SetSpeed(0f); _anim.SetInteger("State", 5); } if (current == PersonStatus.Status.Raged) { audio.Stop(); SetSpeed(MiddleSpeed); _anim.SetInteger("State", 6); } }
//-----------Initialization void Start() { //Get Components personStatus = GetComponent <PersonStatus>(); _anim = GetComponent <Animator>(); _fireEmitter = GetComponent <ParticleEmitter>(); _rageEmitter = transform.Find("Rage").GetComponent <ParticleEmitter>(); if (Adorer) { _anim.SetFloat("Adoring", 1f); } State = personStatus.UnitStatus; //Register State events personStatus.stateTransition += OnStateChanged; personStatus.refreshEvents(); }
//---------Use this for initialization void Start() { //Get Components _nav = GetComponent <NavMeshAgent>(); ps = GetComponent <PersonStatus>(); rnd = new System.Random(); State = ps.UnitStatus; ps.refreshEvents(); if (State == PersonStatus.Status.Calm) { if (Type == PatrolType.Patrol) { SetNewPatrolDestination(Type); SetSpeed(WalkingSpeed); } if (Type == PatrolType.Fixed) { Randomness = false; SetNewPatrolDestination(Type); SetSpeed(WalkingSpeed); } } if (State == PersonStatus.Status.Concerned) { //if(Type=="Patrol"){ SetNewPatrolDestination(PatrolType.Patrol); SetSpeed(MiddleSpeed); //} } if (State == PersonStatus.Status.Panicked) { SetNewPatrolDestination(PatrolType.Panic); SetSpeed(RunningSpeed); } }
void Update() { dt = Time.deltaTime; State = personStatus.UnitStatus; //If it's Dead if (State == PersonStatus.Status.Dead) { if (isBurning()) { _burnTimer += dt; if (_burnTimer >= BurnWaitTime) { Burn(false); } } } else { //If it's Alive if (State == PersonStatus.Status.Idle) { playTalkLoop(true); if (personStatus.Fear >= 50) { personStatus.UnitStatus = PersonStatus.Status.Concerned; } } if (State == PersonStatus.Status.Calm) { playTalkLoop(true); if (personStatus.Fear >= 50) { personStatus.UnitStatus = PersonStatus.Status.Concerned; } } if (State == PersonStatus.Status.Concerned) { playTalkLoop(false); if (personStatus.Fear < 50) { personStatus.UnitStatus = PersonStatus.Status.Calm; } if (personStatus.Fear >= 80) { personStatus.UnitStatus = PersonStatus.Status.Panicked; } } if (State == PersonStatus.Status.Panicked) { playScreamLoop(); if (personStatus.Fear < 80) { personStatus.UnitStatus = PersonStatus.Status.Concerned; } if (isBurning()) { _burnTimer += dt; if (_burnTimer >= DeathBurnTime) { personStatus.UnitStatus = PersonStatus.Status.Dead; } } } if (State == PersonStatus.Status.Shocked) { playScreamLoop(); _burnTimer += dt; if (_burnTimer >= 1f) { Burn(true); personStatus.UnitStatus = PersonStatus.Status.Dead; } } if (State == PersonStatus.Status.Raged) { playScreamLoop(); } if (State == PersonStatus.Status.Zombie) { } } }