private void Update() { if (singleTarget == null && currentState == EWerewolfStates.Chasing) { canSwingAttack = true; attackTimerActive = false; attackTimer = attackSpeed; newState = previousStates; } if (newState != currentState && currentState != EWerewolfStates.Trapped) { UpdateState(); } if (reachedEndOfPath) { if (singleTarget != null) { float distance = Vector2.Distance(transform.position, singleTarget.position); //Debug.LogFormat("<color=#04b592> Distance: {0} </color>", distance ); if (currentState == EWerewolfStates.Chasing || currentState == EWerewolfStates.Cursed) { if (distance <= 1f) { CheckAction(); } } } } if (attackTimerActive) { TickCountdowns(); } }
void UpdateState() { previousStates = currentState; currentState = newState; newState = currentState; if (currentState == EWerewolfStates.Normal) { if (previousStates != EWerewolfStates.Cursed) { walkSpeed = defaultWalkSpeed; attackSpeed = defaultAttackSpeed; } singleTarget = null; } else if (currentState == EWerewolfStates.Chasing) { if (previousStates != EWerewolfStates.Cursed) { walkSpeed = chaseWalkSpeed; } } else if (currentState == EWerewolfStates.Distracted) { walkSpeed = 0f; attackSpeed = 0f; singleTarget = null; movementEnabled = false; attackEnabled = false; rb.gravityScale = 0f; myCollider.enabled = false; } else if (currentState == EWerewolfStates.Trapped) { walkSpeed = 0f; attackSpeed = 0f; singleTarget = null; movementEnabled = false; attackEnabled = false; myAnimator.SetFloat("Speed", 0); rb.gravityScale = 0f; myCollider.enabled = false; } else if (currentState == EWerewolfStates.Cursed) { walkSpeed = cursedWalkSpeed; attackSpeed = cursedAttackSpeed; myAnimatorOverrideController["werewolf_idle"] = redEyesIdle; myAnimatorOverrideController["werewolf_walking"] = redEyesWalking; myAnimatorOverrideController["werewolf_attack"] = redEyesAttack; } }
protected override void SetDefaultValues() { base.SetDefaultValues(); AIType = EAISelection.Werewolf; previousStates = currentState; newState = currentState; myAnimatorOverrideController = new AnimatorOverrideController(myAnimator.runtimeAnimatorController); myAnimator.runtimeAnimatorController = myAnimatorOverrideController; WerewolfVocalcords = this.gameObject.AddComponent <AudioSource>(); WerewolfVocalcords.outputAudioMixerGroup = m_Channel; WerewolfVocalcords.playOnAwake = false; if (attackSpeed <= 0f) { defaultAttackSpeed = 5f; attackSpeed = defaultAttackSpeed; } else { defaultAttackSpeed = attackSpeed; } if (attackDmg <= 0f) { defaultAttackDmg = 1f; attackDmg = defaultAttackDmg; } else { defaultAttackDmg = attackDmg; } if (chaseWalkSpeed <= 0f) { defaultChaseWalkSpeed = 500f; chaseWalkSpeed = defaultChaseWalkSpeed; } else { defaultChaseWalkSpeed = chaseWalkSpeed; } if (cursedWalkSpeed <= 0f) { defaultCursedWalkSpeed = 600f; cursedWalkSpeed = defaultCursedWalkSpeed; } else { defaultCursedWalkSpeed = cursedWalkSpeed; } if (cursedAttackSpeed <= 0f) { defaultCursedAttackSpeed = 3f; cursedAttackSpeed = defaultCursedAttackSpeed; } else { defaultCursedAttackSpeed = cursedAttackSpeed; } }
protected override void SetDefaultValues() { base.SetDefaultValues(); AIType = EAISelection.Werewolf; previousStates = currentState; newState = currentState; myAnimatorOverrideController = new AnimatorOverrideController(myAnimator.runtimeAnimatorController); myAnimator.runtimeAnimatorController = myAnimatorOverrideController; if (attackSpeed <= 0f) { defaultAttackSpeed = 5f; attackSpeed = defaultAttackSpeed; } else { defaultAttackSpeed = attackSpeed; } if (attackDmg <= 0f) { defaultAttackDmg = 1f; attackDmg = defaultAttackDmg; } else { defaultAttackDmg = attackDmg; } if (chaseWalkSpeed <= 0f) { defaultChaseWalkSpeed = 500f; chaseWalkSpeed = defaultChaseWalkSpeed; } else { defaultChaseWalkSpeed = chaseWalkSpeed; } if (cursedWalkSpeed <= 0f) { defaultCursedWalkSpeed = 600f; cursedWalkSpeed = defaultCursedWalkSpeed; } else { defaultCursedWalkSpeed = cursedWalkSpeed; } if (cursedAttackSpeed <= 0f) { defaultCursedAttackSpeed = 3f; cursedAttackSpeed = defaultCursedAttackSpeed; } else { defaultCursedAttackSpeed = cursedAttackSpeed; } targets = levelWaypoints; }