Déplacer un GameObject sur une carte 2D d'un point A a un point B.

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
LightWers_
Messages : 4
Inscription : 08 Nov 2018 11:00

Déplacer un GameObject sur une carte 2D d'un point A a un point B.

Message par LightWers_ » 08 Nov 2018 11:24

Hello

J'ai imaginé un script pour déplacer mon Personnage sur une carte en vue du dessus, le personnage ce déplacerait de niveau en niveau représenter par des cases, j'ai imaginé tout le code pour que ça marche et tout est BON.

MAIS vous vous en douter si je suis là c'est qu'il y'a un MAIS. En faite j'ai un peut menti en disant que tout était bon car, même si c'est le cas il me manque un bout de script pour que ça marche, j'aimerais déplacer mon personnage au PIXEL PRES d'une case a une autre.

EXEMPLE: SI j’appuie sur ma touche "Droite" faire déplacer le personnage vers la droite MAIS il faut qu'il s'arrête sur la prochaine case.

Le problème étant là j'arrive a luis appliquer une force avec admet-on AddForce mais je n'arrive pas l’arrêter c'est pourtant surement si simple mais je n'y arrive pas alors je fait appelle a vous.

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

Re: Déplacer un GameObject sur une carte 2D d'un point A a un point B.

Message par djulio74 » 08 Nov 2018 11:36

Salut

A mon avis ton soucis c'est que si tu déplace ton perso avec une force ça va en effet être très dure a gérer précisément ses déplacement.
il faudrait que tu regarde du coté de Transform.Translate qui te permettra de définir précisément un mouvement.

Tu peux aussi regarder Ce topic du forum ou quelqu'un met justement en place les déplacements case par case
;-)

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

LightWers_
Messages : 4
Inscription : 08 Nov 2018 11:00

Re: Déplacer un GameObject sur une carte 2D d'un point A a un point B.

Message par LightWers_ » 08 Nov 2018 12:04

Merci de ta réponse

en ce qui concerne Transform.Translate je n'ai pas que de bon souvenir, ça peut être une solution. Mais concrètement je ne vois pas comment je pourrait (imaginons) déplacer mon personnage de 200pixel et l’arrêter une fois les 200 pixel atteint (à moins que tu est un exemple ?)

Bref je me suis donc plutôt tourner vers le topic et j'ai pu constater qu'il a un problème similaire au mien j'ai pas mal prêter attention mais même si c'est similaire son problème et plus complexe et n'est similaire au final que de très loin... alors je pense que je vais devoir me concentrer (malheureusement pour moi) au Transform.Translate :/

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

Re: Déplacer un GameObject sur une carte 2D d'un point A a un point B.

Message par boubouk50 » 08 Nov 2018 12:49

Je ne suis pas calé en 2D, mais il doit forcément exister un ratio entre la résolution d'affichage et les coordonnées monde, puisque tu travailles sur une résolution fixe au départ pour caler tout ton petit monde. (Je sais que sur le Canvas, cela se fait). De ce ratio découle la translation à effectuer. Une simple règle de trois.

J'ai tapé Pixel size Unity 2D dans un moteur de recherche. Ceci est un exemple, il y a d'autres sources.
"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

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

Re: Déplacer un GameObject sur une carte 2D d'un point A a un point B.

Message par djulio74 » 08 Nov 2018 12:56

déplacer un personnage de 200px?
Excuse moi mais ça ne veut un peu rien dire. ^^
des pixels ou? a l'image de l'écran? a la texture sur un objet?
dans les deux cas c'est des paramètres variable.

fais voir un screen de ce que tu cherche a faire.

Dans tout les cas il faut déplacer en unité et non pixel
Même si, par hypothèse de cas, tu as un plan avec une texture représentant des case, et tu veux ton perso se déplace sur ce plan d'une case :
- tu connais la taille de ton plan
- tu connais le nombre de case affichées
- tu en déduis la taille d'une case, ce qui te donne une distance (taille du plan / nombre de case en largeur )
- tu déplace ton perso de cette distance

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

LightWers_
Messages : 4
Inscription : 08 Nov 2018 11:00

Re: Déplacer un GameObject sur une carte 2D d'un point A a un point B.

Message par LightWers_ » 08 Nov 2018 12:58

Merci BouBouk

Je vais travailler dessus :)

LightWers_
Messages : 4
Inscription : 08 Nov 2018 11:00

Re: Déplacer un GameObject sur une carte 2D d'un point A a un point B.

Message par LightWers_ » 08 Nov 2018 13:27

Merci djulio tu m'aide un peut plus ^^

avant je travailler sur un autre moteur ou l'unité de Unity était définie comme pixel je n'ai pas encore pris l'habitude de Unity donc si je fait des faute c'est normal :)

merci a vous 2 je pense que j'ai asser d'information pour mener à bien ce projet ^^

SidCamelot
Messages : 27
Inscription : 16 Oct 2018 23:14

Re: Déplacer un GameObject sur une carte 2D d'un point A a un point B.

Message par SidCamelot » 08 Nov 2018 15:02

Bon moi je suis pas un kador en programmation mais par contre je suis graphiste et mes connaissances en informatique suffisent pour te dire que ce n'est pas une bonne idée de travailler en "pixels" pour gérer tes déplacements. Ça n'a aucun sens dans la mesure où le pixel n'est pas une unité de mesure. D'ailleurs je ne sais même pas si c'est prévu dans Unity mais ça m'étonnerait ! Le script de Djulio dans le lien que t'a donné Boubouk est juste parfait pour règler ton problème il suffit d'intervenir sur les valeurs de déplacement, et de les diviser si tu trouves que les "pas" sont trop grands.

Répondre

Revenir vers « (C#) CSharp »