[RESOLU] MY-AL Problème AI Ennemie

Pour les scripts écrits en Javascript (UnityScript). :!: Obsolète :!:
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Unity911
Messages : 24
Inscription : 08 Fév 2017 01:28

[RESOLU] MY-AL Problème AI Ennemie

Message par Unity911 » 08 Fév 2017 01:48

Bonjour,

J'ai ajouté un script AI a mon ennemie , les animation fonctionnent ,le joueur perd de la santé , mais mon ennemie n'avance pas.
Il regarde le joueur mais ne poursuit pas le joueur , il coure sur place .
Le script n'a pas d'erreur dans la console , je suis a cour d'idée ,je ne trouve pas d'où peut venir le problème.

Merci pour votre Aide

Code : Tout sélectionner

#pragma strict

var Distance : float;
var Target : Transform;
var lookAtDistance : float = 20;
var chaseRange : float = 10;
var attackRange : float = 2.2;
var moveSpeed : float = 3;
var Damping : float = 6;
var attackRepeatTime : float = 1;

var damage : float = 10;

private var attackTime : float;

var controller : CharacterController;
var gravity : float = 20;

private var moveDirection : Vector3 = Vector3.zero;



function Start () {
attackTime = Time.time;
FindHealth();	
}



function Update () {
Distance = Vector3.Distance(Target.position, transform.position);
if (Distance < lookAtDistance){
lookAt();
}

if (Distance < attackRange){
attack();
}

else if (Distance < chaseRange){
chase();
}
}



function lookAt (){
var rotation = Quaternion.LookRotation(Target.position - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation, rotation,Time.deltaTime * Damping);
}



function chase() {
GetComponent.<Animator>().Play("run");
moveDirection = transform.forward;
moveDirection *= moveSpeed;
moveDirection.y -= gravity * Time.deltaTime;
}



function attack() {
if (Time.time > attackTime){
GetComponent.<Animator>().Play("creature1Attack2");
Target.SendMessage("PlayerDamage", damage);
Debug.Log ("The enemy has attacked");
attackTime = Time.time + attackRepeatTime;
}
}



function ApplyDamage(){
chaseRange += 30;
moveSpeed += 2;
lookAtDistance += 40;
}



function FindHealth(){
Target = GameObject.Find("Player").GetComponent(HealthScript).transform;
}
Dernière édition par Unity911 le 08 Fév 2017 14:44, édité 1 fois.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6220
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: MY-AL Problème AI Ennemie

Message par boubouk50 » 08 Fév 2017 10:19

Code : Tout sélectionner

function chase() {
GetComponent.<Animator>().Play("run");
moveDirection = transform.forward;
moveDirection *= moveSpeed;
moveDirection.y -= gravity * Time.deltaTime;
}
A aucun moment, tu ne bouges ton personnage. Tu ne fais qu'affecter moveDirection.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Unity911
Messages : 24
Inscription : 08 Fév 2017 01:28

Re: MY-AL Problème AI Ennemie

Message par Unity911 » 08 Fév 2017 14:15

Comment et où rajouter une ligne permettant de faire bouger mon personnage sans qu'il ne flotte dans les air et joué une animation pendant qu'il poursuis le joueur ?
je débute en js.

merci

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6220
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: MY-AL Problème AI Ennemie

Message par boubouk50 » 08 Fév 2017 14:33

Ton personnage principal bouge je suppose, donc il doit avoir un characterController. Va farfouiller un peu de ce côté là voir comment cela est structuré.
Il te faut trouver les fonctions: Translate (), ou transform.position ou transform.localPosition.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Unity911
Messages : 24
Inscription : 08 Fév 2017 01:28

Re: MY-AL Problème AI Ennemie

Message par Unity911 » 08 Fév 2017 14:36

Sa y est j'ai trouver, l'ennemie me poursuis enfin:

Code : Tout sélectionner

function chase (){
 
 GetComponent.<Animator>().Play("walk");

moveDirection = transform.forward;
moveDirection *=moveSpeed;

moveDirection.y -= gravity * Time.deltaTime;
controller.Move(moveDirection * Time.deltaTime);


Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6220
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: MY-AL Problème AI Ennemie

Message par boubouk50 » 08 Fév 2017 14:40

Si ton problème est résolu, édite le titre de ton premier message en ajoutant [RESOLU] en début de celui-ci
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Unity911
Messages : 24
Inscription : 08 Fév 2017 01:28

Re: MY-AL Problème AI Ennemie

Message par Unity911 » 08 Fév 2017 14:43

OK

Verrouillé

Revenir vers « (Js) Javascript »