// === Animation === // public void PlayRandomAnimation(AIBehaviors fsm) { if (animationStates.Length > 0) { int randAnimState = (int)(Random.value * animationStates.Length); fsm.PlayAnimation(animationStates[randAnimState]); } }
// === Animation === // public void PlayRandomAnimation(AIBehaviors fsm) { int animationIndex = 0; if (animationStates.Length > 0) { animationIndex = (int)(Random.value * animationStates.Length); } fsm.PlayAnimation(animationStates[animationIndex]); }
protected override void Action(AIBehaviors fsm) { Transform target = fsm.GetClosestPlayer(objectFinder.GetTransforms()); string attackAnimationName = animationStates[0].name; bool useAnimationTime = skinnedMeshRenderer == null || skinnedMeshRenderer.isVisible; if (!useAnimationTime && attackAnimation != null) { useAnimationTime = attackAnimation.cullingType == AnimationCullingType.AlwaysAnimate; } if (target != null) { HandlePreviousStateMovement(fsm, target); } AIAnimationState animState = fsm.animationStates.GetStateWithName(attackAnimationName); fsm.PlayAnimation(animState); if (scriptWithAttackMethod != null) { if (!string.IsNullOrEmpty(methodName)) { if (useAnimationTime && attackAnimation != null && attackAnimation[attackAnimationName] != null) { curAnimPosition = attackAnimation[attackAnimationName].normalizedTime % 1.0f; } else { curAnimPosition %= 1.0f; curAnimPosition += Time.deltaTime / animationLength; } if (previousSamplePosition > attackPoint || curAnimPosition < attackPoint) { previousSamplePosition = curAnimPosition; return; } previousSamplePosition = curAnimPosition; TriggerCooldown(); Attack(fsm, target); } } }