2017-05-01 3 views
2

J'ai actuellement une scène 2D avec une caméra orthographique et je peux déplacer mon lecteur avec mes touches WASD ce qui est génial. Je veux ajouter une fonctionnalité de clic pour me déplacer, mais je suis en quelque sorte perdu dans une approche. J'ai lu/regardé quelques tutoriels et tout semble tourner autour du système Nav/Mesh. Mon problème cependant est que ma scène actuelle pour le sol et les murs ont des Sprite Renderers et/ou des BoxColliders sur eux et je ne peux pas avoir un Sprite Renderer et un Mesh Renderer sur le même GameObject. Voici une capture d'écran rapide de ce que j'ai:Ajout d'un clic pour me déplacer avec la recherche de chemin vers mon projet 2D actuel dans Unity

enter image description here

Maintenant, je comprends que je peux facilement créer un clic pour se déplacer avec un

Camera.main.ScreenToWorldPoint(Input.mousePosition); 

et se diriger vers cette position avec

Vector3.MoveTowards(transform.position, target, speed * Time.deltaTime); 

Le défi pour moi maintenant et la connaissance que je veux est si j'ai quelque chose comme dans la capture d'écran comment puis-je ajouter une sorte de recherche de chemin sy tige si j'étais en dessous de la maison et cliqué au-dessus de la maison que mon personnage se promènerait dans la maison pour y arriver? Est-ce que j'ai même besoin de modifier mes sprites actuels pour le sol?

J'ai eu l'idée de créer des GameObjects supplémentaires en ajoutant un Mesh Filter et Mesh Renderer avec "None" pour les matériaux et de les placer comme des pièces de puzzle autour de ma scène, ce qui représenterait les zones que je voudrais déplacer.

Est-ce que cette approche me semble viable? Est-ce trop? Y a-t-il un moyen plus facile?

+0

Est-ce que votre déménagement de caractère dans les étapes à base discrètes, tuiles ou peuvent-ils se déplacer indépendamment des tuiles? –

+0

Actuellement, dans ce projet, j'ai des scripts qui permettent au personnage de se déplacer indépendamment via le clavier (WASD), mais je voulais ajouter une fonctionnalité de cliquer pour déplacer avec la recherche de chemin. Je voulais vraiment utiliser le quelque chose intégré à Unity, car cela aurait du sens mais je ne comprends pas pourquoi ils fournissent tout ce côté de la 2D avec lequel nous pouvons travailler mais ne fournissons pas NavMesh pour le plan XY. D'après son apparence, même si les gens le demandent depuis quelques années. La seule raison pour laquelle je peux penser à pourquoi il n'est pas encore complètement ajouté aux avions XY est qu'ils font de l'argent sur les actifs A * dans le magasin. – JoeyL

+0

@ThomasHilbert Je suis en train de coder mon propre système A * qui devrait suffire pour ce kit RPG. – JoeyL

Répondre

2

Vous pouvez utiliser "NavMeshAgent" pour déplacer votre lecteur. Le composant "NavMeshAgent" est attaché à un personnage mobile dans le jeu pour lui permettre de naviguer dans la scène en utilisant NavMesh.

Une fois que vous avez cuit les navmesh Il est facile à utiliser -

navMeshAgent.SetDestination(target); 

Référence - Video Tutorial to create and use nav mesh, Unity Script reference, Navigation and Path Finding

Suivez ces étapes pour apprendre comment faire cuire un Nav Mesh -

  1. Créez un cube 3D et mettez-le à l'échelle (20, 1, 20) pour le mettre au sol (renommez-le également en étage).
  2. Créez un autre cube 3D, placez-le à l'intérieur du sol et mettez-le à l'échelle par 5 sur l'axe Y (renommez en maison).
  3. Dupliquez le cube de l'étape 2 et changez sa position pour qu'il ne chevauche pas l'autre maison.
  4. Allez dans la fenêtre> Navigation. Cela ouvrira le panneau de navigation avec l'onglet objet sélectionné.
  5. SÉLECTIONNEZ l'objet de sol dans la hiérarchie. Et cliquez sur "Navigation statique" case à cocher.
  6. Une fenêtre vous demandera d'activer la navigation statique pour les enfants, cliquez sur "Oui". Aller à l'onglet "Bake" dans le panneau de navigation et cliquer sur le bouton "Bake" en bas.
  7. Vous devriez être en mesure de voir le Nav Mesh généré en bleu.

Screenshot pour le même - enter image description here

+0

Je vous remercie pour une certaine direction sur ma question Mukesh Saini. Le truc c'est que je n'ai pas encore de filtres Mesh ni de Mesh Renderers car ma scène était à l'origine pour se déplacer avec les touches WASD donc le seul moteur de rendu que j'ai est un Sprite Renderer pour ma terre et mes GameObjects et aussi pour mes murs utilisent collider2D. Beaucoup de tutoriels que je rencontre traitent de modèles 3D et ils ont d'abord mis sur Mesh Filters et Mesh Renderers pour commencer. Toute approche sur la façon dont j'accomplirais cela? – JoeyL

+0

J'ai ajouté un autre GameObject vide et y ai simplement ajouté un Mesh Filter et Mesh Renderer et l'ai utilisé comme zone de recherche de chemin mais quand je l'ai fait, je n'ai pas vu le bleu clair où mon personnage pouvait marcher. : – JoeyL

+0

@joeyL, J'ai inclus les étapes pour générer Nav Mesh –