[JS] AI Chemin de ronde. (pathfinder).

Cette section est destinée aux scripts partagés par la communauté. Chaque post est destiné à un script. Suivez bien les recommandations.
Avatar de l’utilisateur
Franck
Bricoleur
Bricoleur
Messages : 2884
Inscription : 08 Jan 2011 18:43
Localisation : Tours

[JS] AI Chemin de ronde. (pathfinder).

Message par Franck » 24 Juil 2012 08:55

-NOM DU SCRIPT : AICheminDeRonde.js

-AUTEUR(S): Franck. (Merci les tutos de youtube, de khrys et des vieux du fofo!)

-DESCRIPTION : Un path finder. (qui fait faire un chemin a un ennemi par exemple).

-UTILISATION : Placer le script sur le gameObject. Dans l'inspector mettre le nombre de checkPoints (que l'object va utilisé pour faire sa ronde), plus un.
Sur la scene placer des empty pour tracer le chemin de ronde.(Donc un empty de moins que la totalite des checkPoints!)
Glisser les empty de la scène sur les checkPoints du script dans l'inspector, cela indiquera l'ordre d'utilisation des empty.Ne pas se servir du checkPoint 0, il est reservé!
2 vitesses permettent de régler: la vitesse de déplacement et la vitesse de rotation quand l'object passe d'un checkpoint a un autre.

-SCRIPT :

Code : Tout sélectionner

var checkPoint : Transform[];
var vitesse : float = 1.0;
var vitesseRotation : float = 1.0;
private var pointActuel : int = 0;

function Awake(){

  checkPoint[0] = transform;
}

function Update(){

  var point : Vector3 = checkPoint[pointActuel].position;
  var destination: Vector3 = point - transform.position;
  var controller : CharacterController = GetComponent(CharacterController);    
  var bouger = controller.SimpleMove(destination.normalized * vitesse * Time.deltaTime);

  if(destination.magnitude < 1){
  
    pointActuel ++;
  }
  
  if(pointActuel > checkPoint.Length - 1){
    
    pointActuel = 0;
  }


  transform.rotation = Quaternion.Slerp(transform.rotation,  
                       Quaternion.LookRotation(checkPoint[pointActuel].position - transform.position), vitesseRotation * Time.deltaTime);
  transform.rotation.x = 0;
  transform.rotation.z = 0;
}
Dés fois j'bug, dés fois j'bug pas.

Répondre

Revenir vers « Scripts »