Comment puis-je faire un mouvement de coordonnées polaires convivial autour d'un cercle?

23

Je travaille sur un jeu 2D où vous atterrissez sur des planètes avec un navire et pouvez quitter le navire et vous promener.

Ces planètes sont très petites (pensez à environ 350 pixels de rayon parfois) et sont vues de côté. Ainsi, vous pouvez facilement voir la planète entière sur l'écran en général.

Cela peut être un peu déroutant alors voici une image: jeu de l'espace

J'utilise les touches A et D pour se déplacer respectivement dans le sens antihoraire et dans le sens horaire. Le problème est que si vous êtes au "sommet" de la planète (moitié supérieure), cela a du sens: A se déplace vers la gauche, D se déplace vers la droite. Cependant, si vous êtes au "bas" de la planète (moitié inférieure), A se déplace vers la droite et D se déplace vers la gauche.

Avez-vous des idées sur la façon de rendre cela plus convivial?

MCMastery
la source
21
Avez-vous demandé aux utilisateurs s'ils trouvent cela déroutant? Pour ma part, certainement pas - vous appuyez sur la droite pour déplacer votre personnage vers la droite et la gauche pour déplacer votre personnage vers la gauche du point de vue de votre personnage . C'est bien mieux que, disons, de changer les boutons au milieu d'un tour (si vous envisagez de le faire).
Charanor

Réponses:

38

Ma première suggestion serait de rester avec A= sens anti-horaire et D= mouvement horaire. Ce n'est pas très déroutant et c'est à peu près le choix «standard» (c'est-à-dire le plus courant) en ce qui concerne le mouvement orbital comme celui-ci.

Une autre façon serait de changer la façon dont votre jeu évolue. Au lieu de déplacer le joueur lorsqu'il se trouve sur une planète, vous pouvez plutôt faire pivoter la planète. C'est également un choix très courant, mais cela peut être désorientant si vous avez plusieurs planètes à l'écran car tout sauf le joueur devra tourner. Si vous décidez d'utiliser cette méthode, il peut être utile d'afficher uniquement une partie de la planète pour réduire la quantité d'objets en mouvement dont votre œil doit faire le suivi:

moitié supérieure de la planète uniquement

Si vous êtes libre d'utiliser la souris, vous pouvez toujours utiliser les clics de souris pour vous déplacer. En cliquant sur un emplacement, le joueur se déplacera vers ce point et il choisira automatiquement la direction la plus courte. Les cercles sont des "clics" et les flèches sont la direction la plus courte.

direction la plus courte pour le clic

En prime, il est également très facile de traduire dans les contrôles mobiles si vous souhaitez également publier votre jeu en tant qu'application.

Charanor
la source
3
Si vous suivez le mouvement de la caméra, je suggère de le retarder un peu, si vous voulez souligner la direction dans laquelle vous allez et la vitesse. votre personnage apparaîtra incliné de 5 ou 10 degrés dans la direction dans laquelle vous vous déplacez.
satibel
16

Lorsque le personnage sort du navire, réorientez la vue pour que le personnage soit au-dessus de la planète, puis déplacez la vue avec le personnage pendant qu'il se promène. De cette façon, le personnage est toujours au top par rapport à la vue sur une planète, de sorte que les commandes gauche / droite peuvent rester cohérentes, peu importe où vous atterrissez.

ricksmt
la source
3
Cela pourrait devenir très désorientant si vous ne faites pas attention.
Beefster
11

Une approche (souvent utilisée dans les jeux à la troisième personne avec des mouvements basés sur des bâtons qui ont également des caméras non statiques) consiste à établir le cadre de référence du mouvement à chaque fois que l'entrée commence (dans votre cas, lorsque la touche est enfoncée) et à conserver ce cadre de mouvement jusqu'à ce que l'entrée se termine (la clé est relâchée). Cela signifie que la touche "A" déplacerait toujours le caractère "vers la gauche", quel qu'il soit - dans le sens des aiguilles d'une montre s'il se trouve au bas du cercle, dans le sens contraire des aiguilles d'une montre - jusqu'à ce que la touche soit relâchée.

Malheureusement, puisque vous êtes contraint à un cercle, cette technique s'effondrera toujours lorsque le personnage se trouvera à l'extrême gauche ou à l'extrême droite du cercle. Vous pouvez le faire fonctionner simplement en choisissant arbitrairement la direction à suivre, mais l'utilisateur peut trouver cela déroutant. Peut-être plus confus que de simplement s'en tenir à l'approche "A est toujours dans le sens antihoraire" que vous avez actuellement.


la source
6
À droite du cercle, S doit se déplacer dans le sens des aiguilles d'une montre.
user253751
1
Je n'y ai pas pensé parce que l'OP ne mentionnait que deux clés, mais c'est une bonne idée.
1
Il est également important de considérer les commandes analogiques du manche, où ce modèle de contrôle se sent le mieux.
Beefster
10

Je vous suggère de jeter un oeil à un concept similaire mais ensuite en 3D: Super mario galaxy.

capture d'écran super mario galaxy https://youtu.be/_8eJC4gIAm4?t=19m

Lors de mouvements courts, le cadre de référence reste le même, l'univers ne bouge pas, dépasse un certain seuil, l'univers se déplace / se déplace de sorte que le cadre de référence est de retour au milieu.

Vous souhaiterez peut-être "brouiller le mouvement" de l'univers lors de son déplacement afin qu'il soit plus naturel et que les yeux ne se concentrent pas sur les pièces mobiles qui changent de position.

Je suppose que Nintendo a investi beaucoup de recherches pour rendre le jeu aussi fluide que possible et c'est ce sur quoi ils se sont installés. J'aime toujours regarder ce que les grandes entreprises ont découvert, en espérant qu'elles ont investi quelque chose dans la R&D pour un confort et une jouabilité maximum.

Tschallacka
la source
7

Utilisez A/ Dpour déplacer le personnage dans la direction vers le point le plus à gauche / à droite de la planète, respectivement, et W/ Spour déplacer le personnage vers les points le plus haut / le plus bas.

De cette façon, le joueur déplace toujours le personnage dans la même direction que le mouvement d'entrée - par exemple, Dse déplace toujours à droite, Sdescend toujours, quelle que soit la position du personnage.

Le jeu peut soit continuer dans la même direction d'horloge pendant que la touche est maintenue enfoncée, soit arrêter le personnage au point limite. Si cela s'arrête, cela ne semble pas être un gros problème - le joueur a un quadrant complet dans lequel changer son entrée s'il veut continuer dans la même direction d'horloge.

De plus, un schéma d'entrée circulaire W- A- S- Dou W- D- S- Aentraîne une circumnavigation de la planète, ce qui semble assez intuitif.

Si vous maintenez plusieurs touches enfoncées, la touche la plus récemment pressée pourrait avoir la priorité, ou vous pourriez utiliser un comportement plus complexe, comme avoir huit points de limitation.

AlliedEnvy
la source
1
C'est ce que j'allais suggérer après avoir joué à Super Mario Odyssey . Cependant, en raison de la modification des systèmes de contrôle, cela n'a pas été assez intuitif au début. Si c'est votre principal système de contrôle, ce ne sera peut-être pas un problème
Kaiged
3

C'est l'un des deux problèmes classiques de "modèle mental" subis par de nombreux jeux.

Chaque joueur développe un "modèle mental" pour la façon dont les contrôles du jeu se transforment en actions de jeu. Comme les jeux sont devenus de plus en plus similaires dans leurs contrôles au fil du temps, les gens ont commencé à s'attendre à ce que leur modèle mental établi s'applique à de nouveaux jeux, plutôt que de développer des modèles distincts pour des jeux distincts. Ce serait bien, sauf que tous les joueurs n'ont pas le même modèle mental de fonctionnement des contrôles.

Par exemple, l'autre problème classique du «modèle mental» consiste à savoir si appuyer sur un joystick (généralement le stick analogique droit d'une manette de jeu) doit signifier lever les yeux , ou si cela doit signifier basculer vers l'avant (c'est-à-dire: regarder vers le bas ). Aucun des deux modèles n'a objectivement raison , mais la plupart des joueurs ne gardent que l'un de ces deux mappages possibles dans leur tête et seront rejetés si un jeu fait quelque chose de différent de ce qu'ils ont personnellement prévu.

Votre question est exactement le même dilemme; le problème du "modèle mental" ici est de savoir si pousser à droite sur un bâton de contrôle signifie "se déplacer vers la droite du personnage" (comme dans Resident Evil), ou "se déplacer vers le côté droit de l'écran" (comme dans Mario). Ou dans ce cas, "déplacez-vous dans le sens des aiguilles d'une montre" (comme dans Tempest, lorsque vous utilisez une conversion traditionnelle des commandes de la palette au joystick).

Chaque joueur aura un modèle intégré auquel il est habitué et qu'il sera réticent à changer (ou aura du mal à changer). Dans un tel problème de "modèle mental", vous avez trois options pour gérer le problème:

  1. En tant que développeur, vous choisissez le modèle qui convient le mieux à votre jeu et vous l'utilisez. Ignorez les plaintes des personnes qui ont des problèmes avec votre modèle choisi; ils devront juste s'adapter. Et si votre jeu est suffisamment convaincant, ils le feront.
  2. Mettez en œuvre les deux modèles possibles et laissez les joueurs choisir celui qu'ils souhaitent utiliser.
  3. Reconcevez le jeu pour vous assurer que le mappage des commandes -> des actions du jeu reste le même, quel que soit le modèle mental que quelqu'un utilise.

L'option 3 ("reconcevoir le jeu afin que les modèles mentaux ne soient pas en conflit") dans ce cas signifierait faire tourner la caméra avec le joueur, de sorte que le joueur apparaît toujours droit à l'écran. De cette façon, "droite signifie aller dans le sens horaire" et "droite signifie aller vers le côté droit de l'écran" sont toujours alignés; il n'y a plus de conflit et les joueurs ne seront pas confus selon leur modèle mental de la façon dont les contrôles sont censés fonctionner.

L'option 2 impliquerait la mise en œuvre des deux styles de contrôle; celui où pousser à droite vous emmène vers le côté droit de l'écran, celui où pousser à droite vous emmène dans le sens des aiguilles d'une montre, et ayant un écran d'options où le joueur peut choisir le style de contrôle qu'il souhaite utiliser.

Tout choix ici est valable; les différentes options nécessitent juste différentes quantités de travail et imposent différentes contraintes à votre jeu. S'il est vraiment important pour vous que le joueur soit visible en se déplaçant sur le côté "inférieur" de la planète, que ce soit pour des raisons thématiques ou artistiques, alors vous ne voudrez pas utiliser l'option 3, et devriez utiliser 1 ou 2. Si non, alors l'option 3 est probablement le choix idéal.

Une note de mise en œuvre mineure pour le style de contrôle «pousser le joystick vers la droite signifie se déplacer vers le côté droit de l'écran»: lors de la mise en œuvre de ce style de contrôle, vous devez le faire en mappant la direction du joystick dans un choix dans le sens horaire / antihoraire, puis gardez cette même décision dans le sens horaire / antihoraire jusqu'à ce que le joystick se déplace à nouveau, même lorsque le joueur se déplace vers le bas de la planète. C'est-à-dire qu'en appuyant à droite en haut d'une planète, ou en bas à droite d'une planète, le personnage commencera à se déplacer dans le sens des aiguilles d'une montre, et le personnage continuera ensuite à se déplacer dans le sens des aiguilles d'une montre même autour du bas de la planète jusqu'à ce que le joueur bouge. le joystick à nouveau, même s'ils se déplacent vers une partie de la planète où cette direction du joystick serait désormais interprétée comme étant une direction différente.

Cette technique est souvent appelée "verrouillage" du contrôle du joystick et est généralement utilisée dans les jeux 3D lorsque la caméra effectue une rotation soudaine (ce que vous ne voulez pas faire changer soudainement de direction), mais peut également être utile ici dans un jeu en 2D, si un mouvement de caméra faisait autrement que les entrées non modifiées du joueur signifient soudainement quelque chose de différent qu'avant.

Trevor Powell
la source
1
Glisser vers le bas sur le pavé tactile de mon ordinateur portable avec deux doigts fait-il défiler vers le haut ou vers le bas? Si j'étais sur un appareil mobile, ce serait vers le haut (parce que mes doigts et la page sont «connectés») mais la même direction sur une souris serait vers le bas ... Je sens cette déconnexion chaque fois que j'utilise un Mac ...
Draco18s
@ Draco18s C'est un autre excellent exemple! Windows considère qu'une entrée de défilement vers le bas signifie regarder plus bas dans le document , tandis qu'Apple considère qu'une entrée de défilement vers le bas signifie déplacer le document lui-même vers le bas (ce qui signifie que nous voyons plus vers le haut du document). Mais sur les systèmes d'exploitation de bureau, Apple savait que beaucoup de gens avaient l'autre modèle mental pour le fonctionnement des entrées de défilement, et ils ont donc implémenté les deux et laissé chaque utilisateur choisir celui qu'il préfère. .
Trevor Powell
Oui, vous pouvez le changer, je connais tellement de gens qui l'ont configuré par défaut ("déplacer le document vers le bas"). Heck, l' ordinateur portable Windows que j'ai obtenu pour travailler il y a un mois avait cela par défaut. Je l'ai désactivé rapidement (j'ai plutôt activé la fonction de "défilement des bords", mais je pense que je vais la désactiver à nouveau car elle est trop lente: sérieusement, la hauteur totale de la zone de défilement défile ... cinq lignes. ...)
Draco18s
2

Utilisez W / S / A / D pour l'entrée (ou haut / bas / gauche / droite). Traitez l'entrée comme une direction à 8 voies (y compris les diagonales).

Déplacez ensuite le joueur dans la direction valide (dans le sens horaire ou antihoraire) la plus proche de la direction sur laquelle vous appuyez.

user253751
la source
Je pense que cette solution conviendrait mieux avec un joystick qu'avec un clavier, mais c'est toujours une solution possible, je l'aurais cependant comme choix, car avoir à déplacer vos doigts en cercle sur wasd peut être assez dur pour la main si vous jouez plus d'une heure.
satibel
2

Une option consiste au lieu de définir l'association entre la clé et la direction du mouvement, pour avoir:

  • une touche pour avancer "(dans le sens de la sélection actuelle)
  • une touche pour "faire demi-tour" (changer de direction)

Cela nécessite que le personnage ait une "direction" clairement visible.

Je ne suis pas sûr que cela ait vraiment plus de sens que les autres options ici, mais juste au cas où ...

jcaron
la source
1

C'est là que se situe la gravité. Ainsi, lorsque le personnage-joueur se trouve sur une planète, faites pivoter la caméra avec le mouvement du personnage-joueur afin que le personnage soit toujours au-dessus de la planète.

Mais bien que cela facilite la navigation sur la planète, cela pourrait désorienter le joueur par rapport aux autres objets célestes. C'est un compromis que vous devez décider vous-même.

Philipp
la source
1

Si vous choisissez d'utiliser le mouvement dans le sens horaire / antihoraire, vous pouvez faire un certain nombre de choses pour rendre le système plus intuitif pour vos joueurs.

Donnez au personnage des directions distinctes bien visibles

Si le personnage est à moitié bleu et à moitié rouge, l'orientation devient facile à retenir pour les joueurs. Au lieu d'avoir à identifier "dans le sens des aiguilles d'une montre" ou "dans le sens inverse des aiguilles d'une montre", les joueurs se déplacent soit dans le sens bleu soit dans le sens rouge. Si le personnage est toujours orienté dans une direction (de préférence dans le sens des aiguilles d'une montre, de sorte que le mouvement soit le plus intuitif en position verticale), c'est encore mieux, car les anglophones (et toute autre personne ayant une langue de gauche à droite) ont naturellement tendance à associer `` droite '' avec «en avant», renforçant la connexion entre les commandes et la direction du mouvement.

Ne laissez jamais les personnages cesser de bouger

Tant que vous déplacez votre personnage, il est facile de maintenir l'orientation dans laquelle se trouvent vos commandes. Après tout, continuer à se déplacer dans la direction dans laquelle vous vous déplacez ne fait rien du tout et lorsque vous souhaitez inverser votre mouvement , il n'y a qu'une seule autre clé à choisir. Ce n'est que lorsque vous recommencez à bouger après vous être arrêté que vous êtes confronté à un choix. Plus vous marquez de pause, plus il sera difficile de reprendre en fonction de ce que vous faisiez auparavant. En réduisant la fréquence et la durée des pauses, vous pouvez empêcher les joueurs d'oublier comment se déplacer.

Lupus arcaniste
la source
0

Il existe plusieurs approches à cela.

1) La façon dont j'aborderais cela prendrait des sections de la planète: les côtés supérieur, gauche, droit et inférieur (plus si cela est souhaitable). Et faites-le donc après que l'utilisateur ait appuyé sur une direction, le personnage continuera dans cette direction jusqu'à ce qu'il relâche ce bouton. Donc, si le personnage était sur le côté gauche et que l'utilisateur appuyait, le personnage irait dans le sens des aiguilles d'une montre jusqu'à sa libération. De cette façon, vous n'avez pas à vous soucier des changements dans le cadre de référence pendant que le personnage se déplace, seulement après.

2) Une autre façon de voir comment les "amoureux de l'espace-temps dangereux" l'abordent. Avec un joystick, plutôt que d'avoir le cadre de référence en fonction de la surface, ils l'ont pour que l'angle auquel le joystick soit l'endroit souhaité pour que le "personnage" s'arrête. Leur cadre de référence était donc au centre de leur "planète". Je dis le caractère et la planète, mais ils avaient des parties modulaires du navire à l'extérieur où vous déterminez où elles vont, c'est-à-dire dans quelle direction les propulseurs sont dirigés pour déplacer le navire.

3) Comment vous l'avez conçu maintenant. Cela peut aussi devenir un peu utile, mais rien que les joueurs n'aient vu auparavant. Vous pouvez le modifier pour qu'il apparaisse que la planète tourne à la place, donc le jeu est toujours "au top".

Code Eyez
la source