示例#1
0
    // 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);
        }
    }
示例#2
0
    /*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);
        }
    }
示例#3
0
    //-----------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();
    }
示例#4
0
    //---------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);
        }
    }
示例#5
0
    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)
            {
            }
        }
    }