Animator not changing states on prefabs
I made a simple AI script that follows the player if the player is near and stops when very close to player. I made a Animator controller for the enemy that switches states. The code for AI is this: (I've added some translations because I use my native language (croatian) for variables)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AI1 : MonoBehaviour {
public Transform player;
static Animator anim;
// Use this for initialization
void Start ()
{
anim = GetComponent<Animator>();
player = FindObjectOfType<igracZdravlje>().transform;
}
//trenutnoZdravlje = current enemy HP
//jeNeaktivan = not active
//jeHoda = is moving
//jeNapada = is attacking
void Update ()
{
if (gameObject.GetComponent<neprijateljZdravlje>().neprijateljTrenutnoZdravlje >= 0)
{
Vector3 direction = player.position - this.transform.position;
float angle = Vector3.Angle(direction, this.transform.forward);
if (Vector3.Distance(player.position, this.transform.position) < 5)
{
direction.y = 0;
this.transform.rotation = Quaternion.Slerp(this.transform.rotation,
Quaternion.LookRotation(direction), 0.1f);
anim.SetBool("jeNeaktivan", false);
anim.SetBool("jeHoda", true);
if (direction.magnitude > 1)
{
gameObject.transform.Translate(0, 0, 0.02f);
anim.SetBool("jeHoda", true);
anim.SetBool("jeNapada", false);
}
else
{
anim.SetBool("jeNapada", true);
anim.SetBool("jeHoda", false);
}
}
else
{
anim.SetBool("jeNeaktivan", true);
anim.SetBool("jeHoda", false);
anim.SetBool("jeNapada", false);
}
}
}
}
The problem is that animations show when only one enemy object is in the game. If I put two same enemy objects, then the animations don't work at all and the object keeps looping the idle animation and the states in Animator controller don't change at all.
Animator controller:
Answer by bernardp · Aug 21, 2017 at 09:11 AM
UPDATE ON ANSWER: changed static Animator anim
to private Animator anim
Didn't even notice it was set as 'static' and I don't even know why I put it like that but it solved my problem!
Your answer
Follow this Question
Related Questions
How to replace an Animation State in Animator, without rebuilding all the transitions? 1 Answer
Why StateMachineBehaviour not calling OnStateExit when doing animator.Crossfade through code? 0 Answers
In my StateMachineBehaviours public variables do not update in the inspector 0 Answers
Can't Open Exit Time Settings 0 Answers
How to reuse animations? 0 Answers