Je débute sur C# et actuellement je bosse sur un script pathfinding tout en utilisant l'outil Animator, l'objectif c'est de pouvoir activer le parameter d'Animator "IsRunning" quand l'objet est en déplacement et de le désactiver quand ce dernier arrive à destination.
Tout semble fonctionner sauf quand l'objet arrive a destination ou le "IsRunning" ne se désactive pas. Il me semble qu'une ligne de code me manque dont je ne sais comment l'interpreter pour prévenir que quand le nav mesh (que j'utilise d'ailleurs) passe en off ou quand l'objet arrive à destination, de désactiver le paramètre "IsRunning".
Voici le code que j'utilise :
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[DisallowMultipleComponent]
[RequireComponent(typeof(UnityEngine.AI.NavMeshAgent))]
public class ClickToMove : MonoBehaviour {
private Vector3 targetPosition;
private Animator anim; // Hello Animator
private bool running; // Voici ton paramètre
UnityEngine.AI.NavMeshAgent agent;
void Awake()
{
agent = GetComponent<UnityEngine.AI.NavMeshAgent> ();
}
void Start ()
{
anim = GetComponent<Animator>(); //Quand je dis anim je dis...
targetPosition = transform.position;
running = false; //Narmol tu ne t'active pas alors que t'es immobile
}
void Update ()
{
if (Input.GetMouseButton (0))
SetTargetPosition ();
MovePlayer ();
anim.SetBool ("IsRunning", running); // Je met en place le parametre
}
void SetTargetPosition()
{
Plane plane = new Plane (Vector3.up, transform.position);
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
float point = 0f;
if (plane.Raycast (ray, out point))
targetPosition = ray.GetPoint (point);
running = true; // L'activation du paramètre
}
void MovePlayer()
{
agent.SetDestination (targetPosition);
Debug.DrawLine (transform.position, targetPosition, Color.red);
}
}