- Home /
How do I make my AI animate
So I am working on a game and I need the AI to animate im pretty new to do this im using sebastain lagues speedPercent for the animating and im using blend tree here is the code using
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Patroller : MonoBehaviour
{
public Transform[] waypoints;
public int speed;
public int waypointIndex;
public float dist;
// Start is called before the first frame update
void Start()
{
waypointIndex = 0;
transform.LookAt(waypoints[waypointIndex].position);
}
// Update is called once per frame
void Update()
{
dist = Vector3.Distance(transform.position, waypoints[waypointIndex].position);
if(dist < 1f){
IncreaseIndex();
}
Patrol();
}
void Patrol(){
transform.Translate(Vector3.forward * speed * Time.deltaTime);
}
void IncreaseIndex()
{
waypointIndex++;
if(waypointIndex >= waypoints.Length){
waypointIndex = 0;
}
transform.LookAt(waypoints[waypointIndex].position);
}
}
Answer by Aviryx · Oct 03, 2020 at 02:55 AM
At no point do you appear to be setting any animator parameters
https://docs.unity3d.com/ScriptReference/Animator.SetBool.html
You need to get a reference to the animator controller that controls the AI animation, and set the parameters.
Animator animator;
animator.SetBool("isWalking", true);
Assuming you might not know how to do this...
1) add parameters in the animator window. 2) click on the transition lines between two animation states and set parameters (is walking - true) etc. 3) reference the animator component from a script. (it could be attatched to the AI character)
Answer by Octoberwolf · Oct 03, 2020 at 02:58 AM
At the top add "Animator anim";
In the Start Method add "anim = getcomponent(Animator)()";. or if the animator component is attached to a child gameobject add "anim = getcomponentinChildren()"
use the greater than less than symbols for the getComponent functions instead of parenthesis, for reason I can't type them here cause they have a formatting function. Ex: anim = getComponent "Less than symbol" Animator "Greater than symbol" ().
At the end of the void update method use "anim.setFloat("Name of the float used in the blendTree", value you want it to be)
this value could be speed / max speed if you want a speed percentage. It just depends what you are going for.
Your answer
![](https://koobas.hobune.stream/wayback/20220613013004im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Reset other animations on screen 0 Answers
Can't see each other in multiplayer 2 Answers
Get center direction Vector3 between two other direction Vectors 1 Answer
Calling variables from other scripts 2 Answers
Access other script from Editor script 2 Answers