// 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; } }
//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"); } }