- Home /
Animator issue! Please Help!
So Problem is that my enemy is looping idle and not changing bools when the action happends. There is nothing wrong with the script. All the animations work properly. The transitions in the animator are set to the proper conditions. Yet the animator is not changing bools when the action is triggered. Here i have the script and some snips to help show what is going on to help better understand the situation.
using System.Collections;
public class Chase : MonoBehaviour {
public Transform player;
static Animator anim;
// Use this for initialization
void Start ()
{
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update ()
{
Vector3 direction = player.position - this.transform.position;
float angle = Vector3.Angle(direction,this.transform.forward);
if(Vector3.Distance(player.position, this.transform.position) < 15 && angle < 90)
{
direction.y = 0;
this.transform.rotation = Quaternion.Slerp(this.transform.rotation,
Quaternion.LookRotation(direction), 0.1f);
anim.SetBool("isIdle",false);
if(direction.magnitude > 3)
{
this.transform.Translate(0,0,0.05f);
anim.SetBool("isWalking",true);
anim.SetBool("isAttacking",false);
}
else
{
anim.SetBool("isAttacking",true);
anim.SetBool("isWalking",false);
}
}
else
{
anim.SetBool("isIdle", true);
anim.SetBool("isWalking", false);
anim.SetBool("isAttacking", false);
}
}
}
Answer by moltow · Aug 06, 2017 at 05:39 PM
If I'm understanding you correctly, you're saying that the isIdle
animator property stays checked and the other two never become checked, but that everything else appears to be working correctly. So if my understanding is correct, are you sure that if(Vector3.Distance(player.position, this.transform.position) < 15 && angle < 90)
is ever evaluating to true?
Welli used the script on a character i found on asset store but i wanted to make my own. Like i said before everything works just that It never leaves the its idle state. Even after triggers go off. For example
if(Vector3.Distance(player.position, this.transform.position) < 15 && angle < 90)
Player position transforms but . SetBool "isWalking" is not set in the animator controller .
I'm sorry, I don't know what you mean by "Even after triggers go off."
So the checkboxes for isIdle, isWalking and isAttacking in the upper left hand corner of the Animator controller window are never changing, is that correct? If so, I would do some debug logging to help me figure out why. For example...
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Chase : $$anonymous$$onoBehaviour {
public Transform player;
static Animator anim;
// Use this for initialization
void Start ()
{
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update ()
{
Vector3 direction = player.position - this.transform.position;
float angle = Vector3.Angle(direction,this.transform.forward);
if(Vector3.Distance(player.position, this.transform.position) < 15 && angle < 90)
{
Debug.Log ("distance is less than 15 and angle is less than 90!");
direction.y = 0;
this.transform.rotation = Quaternion.Slerp(this.transform.rotation,
Quaternion.LookRotation(direction), 0.1f);
anim.SetBool("isIdle",false);
if(direction.magnitude > 3)
{
this.transform.Translate(0,0,0.05f);
anim.SetBool("isWalking",true);
anim.SetBool("isAttacking",false);
}
else
{
anim.SetBool("isAttacking",true);
anim.SetBool("isWalking",false);
}
Debug.LogFormat ("direction.magnitude: {0}", direction.magnitude);
}
else
{
Debug.LogFormat ("Distance: {0}; Angle: {1}", Vector3.Distance (player.position, this.transform.position), angle);
anim.SetBool("isIdle", true);
anim.SetBool("isWalking", false);
anim.SetBool("isAttacking", false);
}
}
}
If the checkboxes are changing, but the animation states aren't changing to reflect those properties, then I would recheck the transition parameters to make sure they are, in fact, correct.
BTW, I know the above will spam your console, but you can easily remove the debug logging once you've found the problem.
Your answer
Follow this Question
Related Questions
Animation Control 0 Answers
Mixamo animations do not play in inspector 0 Answers
Randomly Play Animator Animation 0 Answers
How to reset animator controller ? 4 Answers