Exemplo n.º 1
0
 // OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks
 override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
 {
     Patrollable.PatrolStatus status = patrollableComponent.TickMovement(Time.deltaTime);
     if (patrollableComponent.enterTrigger || (patrollableComponent.GetComponent <Entity>().boundScanner&& patrollableComponent.GetComponent <Entity>().boundScanner.enemyEntityScanned&& !patrollableComponent.GetComponent <Entity>().boundScanner.enemyEntityScanned.hiddenInPlainSight))
     {
         animator.SetTrigger("attack");
     }
     if (waiting)
     {
         if (patrollableComponent.scanWaitTimer > patrollableComponent.scanDuration * 2.0f)
         {
             if (!patrollableComponent.lastStateAttack)
             {
                 patrollableComponent.isHunting = false;
                 patrollableComponent.resetToDestinationVillage();
                 animator.SetTrigger("patrol");
             }
             else
             {
                 patrollableComponent.lastStateAttack = false;
                 scanWaitTimer = 0;
                 waiting       = false;
             }
         }
     }
     else if (status == Patrollable.PatrolStatus.Finished && !waiting)
     {
         patrollableComponent.triggerScan();
         waiting = true;
         patrollableComponent.scanWaitTimer = 0;
     }
 }
Exemplo n.º 2
0
    //OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks
    override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        lastSpot += Time.deltaTime;
        Entity boundEntity = patrollableComponent.GetComponent <Entity>();

        if (boundEntity.boundScanner && boundEntity.boundScanner.enemyEntityScanned && !boundEntity.boundScanner.enemyEntityScanned.hiddenInPlainSight)
        {
            patrollableComponent.lastSeenEnemyPosition   = boundEntity.boundScanner.lastEnemyPosition;
            patrollableComponent.didintCheckLastPosition = true;
            patrollableComponent.reset(boundEntity.boundScanner.enemyEntityScanned.transform.position);
            patrollableComponent.TickMovement(Time.deltaTime);
            patrollableComponent.SetToNormal();
        }
        else if (patrollableComponent.enterTrigger && visitingLastPosition && lastSpot < spotThreshold)
        {
            lastSpot             = 0.0f;
            visitingLastPosition = false;
            timer = 0;
            animator.SetTrigger("spot");
        }
        else if (patrollableComponent.enterTrigger)
        {
            patrollableComponent.didintCheckLastPosition = true;
            patrollableComponent.reset(patrollableComponent.enterTrigger.gameObject.transform.position);
            patrollableComponent.TickMovement(Time.deltaTime);
            patrollableComponent.SetToNormal();
        }
        else if (patrollableComponent.didintCheckLastPosition && !patrollableComponent.isHunting)
        {
            patrollableComponent.didintCheckLastPosition = false;
            visitingLastPosition = true;
            timer = 0;
            patrollableComponent.reset(patrollableComponent.lastSeenEnemyPosition);
            patrollableComponent.SetToScout();
        }
        else if (patrollableComponent.didintCheckLastPosition && patrollableComponent.isHunting)
        {
            timer = 0;
            visitingLastPosition = true;
            patrollableComponent.reset(patrollableComponent.lastSeenEnemyPosition);
            patrollableComponent.lastStateAttack = true;
            animator.SetTrigger("hunt");
        }
        else if (visitingLastPosition)
        {
            Patrollable.PatrolStatus status = patrollableComponent.TickMovement(Time.deltaTime);
            timer += Time.deltaTime;
            if (status == Patrollable.PatrolStatus.Finished)
            {
                visitingLastPosition = false;
                timer = 0;
            }
        }
        else
        {
            animator.SetTrigger("patrol");
        }
    }