Simple IA NavMesh problème

Pour les scripts écrits en C#
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
olrik_jhor
Messages : 4
Inscription : 31 Déc 2014 14:38

Simple IA NavMesh problème

Message par olrik_jhor » 01 Juin 2016 13:58

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.

Avatar de l’utilisateur
@RLG
Messages : 367
Inscription : 17 Jan 2015 00:13
Localisation : Rennes

Re: Simple IA NavMesh problème

Message par @RLG » 01 Juin 2016 14:13

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.

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

Re: Simple IA NavMesh problème

Message par boubouk50 » 01 Juin 2016 14:14

"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

olrik_jhor
Messages : 4
Inscription : 31 Déc 2014 14:38

Re: Simple IA NavMesh problème

Message par olrik_jhor » 02 Juin 2016 00:48

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.

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

Re: Simple IA NavMesh problème

Message par boubouk50 » 02 Juin 2016 09:19

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
"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

olrik_jhor
Messages : 4
Inscription : 31 Déc 2014 14:38

Re: Simple IA NavMesh problème

Message par olrik_jhor » 02 Juin 2016 10:08

Ok je vais tester cela merci ;)

olrik_jhor
Messages : 4
Inscription : 31 Déc 2014 14:38

Re: Simple IA NavMesh problème

Message par olrik_jhor » 02 Juin 2016 14:41

Ok Bon j'ai trouver.

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;
	
	}
 
 }
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. :!:

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

Re: Simple IA NavMesh problème

Message par boubouk50 » 02 Juin 2016 15:01

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.
"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

Répondre

Revenir vers « (C#) CSharp »