Bonjour a tous
Je développe actuellement une application gratuite de terrarium virtuel.
Mon problème :
- J'ai un terrarium avec une araignée avec un composent NavMesh.
Il y a un bouton dans l'UI qui permet de faire tomber un insecte pour la nourrir.
J'utilise la fonction instantiate , il tombe et atterri sur le sol du Terra.
J'aimerai que l'araignée le détecte et avance sur lui une fois qu'il touche le sol.
J'ai essayer avec un (NavMesh Hit) mais cela ne marche pas.
Et il fraudai que mon insecte se déplace en random dans le terra.
Je n'ai pas beaucoup d'expérience niveau IA.
Pour info je script en C#.
Merci a vous.
Attention à la section où vous postez.
Merci de lire la Netiquette.
Simple IA NavMesh problème
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
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
Re: Simple IA NavMesh problème
Tu peux mettre un trigger au dessus du sol, dès que l'insecte le traverse tu donnes à ton araignée une nouvelle cible.
Everything happens for a reason. Sometimes the reason is that you're stupid and make bad decisions.
- boubouk50
- ModoGenereux
- Messages : 6265
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: Simple IA NavMesh problème
Tu lui envoies la destination et c'est bon, non?
http://docs.unity3d.com/Manual/nav-Move ... ation.html
http://docs.unity3d.com/ScriptReference ... ation.html
http://docs.unity3d.com/Manual/nav-Move ... ation.html
http://docs.unity3d.com/ScriptReference ... ation.html
"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
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
-
- Messages : 4
- Inscription : 31 Déc 2014 14:38
Re: Simple IA NavMesh problème
Merci de vos réponses. Malheureusement non.
L'araignée dois le détecter avec le navmeshHit mais il ne se passe rien. J'ai l'impression que Instantate fait bugé les navmesh.
L'insecte est référencé grâce à son tag dans le script de détection mais c'est un préfab. Donc il n'est pas présent dans la scène des le début.
L'araignée dois le détecter avec le navmeshHit mais il ne se passe rien. J'ai l'impression que Instantate fait bugé les navmesh.
L'insecte est référencé grâce à son tag dans le script de détection mais c'est un préfab. Donc il n'est pas présent dans la scène des le début.
- boubouk50
- ModoGenereux
- Messages : 6265
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: Simple IA NavMesh problème
Tu peux faire l'inverse: c'est l'insecte qui gère l'appel.
Ton insecte, quand il va toucher le sol (OnCollisionEnter ()), il peut trouver l'araignée et lui envoyer sa position. Ainsi, l'araignée sait où est l'insecte. Il reste ensuite à l'envoyer à cette position.
http://docs.unity3d.com/ScriptReference ... ation.html
Ton insecte, quand il va toucher le sol (OnCollisionEnter ()), il peut trouver l'araignée et lui envoyer sa position. Ainsi, l'araignée sait où est l'insecte. Il reste ensuite à l'envoyer à cette position.
http://docs.unity3d.com/ScriptReference ... ation.html
"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
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
-
- Messages : 4
- Inscription : 31 Déc 2014 14:38
Re: Simple IA NavMesh problème
Ok je vais tester cela merci
-
- Messages : 4
- Inscription : 31 Déc 2014 14:38
Re: Simple IA NavMesh problème
Ok Bon j'ai trouver.
Nouveau problème une fois que l'araignée rentre dans la sphère trigger de la blatte des fonction s'active pour l'araignée et
J'utilise Destroy(gameobject , 0.2f);
Pour faire disparaitre la blatte. Mais le problème c'est que du coup l'araignée perd l'info pour le Transform de la blatte . Et ça ne remarche pas après avec une seconde blatte.
Unity me demande de mettre le Transform en " Null " mais je ne sais pas faire.
MissingReferenceException: The object of type 'Transform' has been destroyed but you are still trying to access it.
Your script should either check if it is null or you should not destroy the object.
spider_attack.FixedUpdate () (at Assets/Script/IA/spider_attack.cs:44)
Les balises code SVP ! Merci de lire la Netiquette.
Code : Tout sélectionner
if(Blate.gameObject.activeInHierarchy == true){
Attack = NavMesh.Raycast(transform.position,Blate.position, out hit, NavMesh.AllAreas);
Debug.DrawLine(transform.position, Blate.position, Attack ? Color.red : Color.green);
if (!Attack){
Debug.DrawRay(hit.position, Vector3.up, Color.red);
///////////////if(hit.collider.tag == "Food"){
nav.SetDestination(Blate.position);
anim.SetBool("isStop", false);
anim.SetBool("isRun", true);
nav.speed = attackSpeed;
}
}
J'utilise Destroy(gameobject , 0.2f);
Pour faire disparaitre la blatte. Mais le problème c'est que du coup l'araignée perd l'info pour le Transform de la blatte . Et ça ne remarche pas après avec une seconde blatte.
Unity me demande de mettre le Transform en " Null " mais je ne sais pas faire.
MissingReferenceException: The object of type 'Transform' has been destroyed but you are still trying to access it.
Your script should either check if it is null or you should not destroy the object.
spider_attack.FixedUpdate () (at Assets/Script/IA/spider_attack.cs:44)
Les balises code SVP ! Merci de lire la Netiquette.
- boubouk50
- ModoGenereux
- Messages : 6265
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: Simple IA NavMesh problème
Tu ne fais juste pas les choses dans le bon ordre.
Après la destruction de la blatte, normalement, tu ne devrais pas à avoir à y accéder.
Là où ton erreur est générée, tu dois tester si le transform existe ou pas.
if (maVariabletrfansform != null)
Ensuite, pour la deuxième blatte, je pencherai sur un souci de gestion des cas. Tu dois agencer ton code pour qu'il s'initialise avec une nouvelle proie.
Après la destruction de la blatte, normalement, tu ne devrais pas à avoir à y accéder.
Là où ton erreur est générée, tu dois tester si le transform existe ou pas.
if (maVariabletrfansform != null)
Ensuite, pour la deuxième blatte, je pencherai sur un souci de gestion des cas. Tu dois agencer ton code pour qu'il s'initialise avec une nouvelle proie.
"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
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation