Un input Press / Drag / Release pour mobile ?

Développement de jeux à destination des plateformes Android / IOS avec Unreal Engine
Avatar de l’utilisateur
DeadRioters
Messages : 2
Inscription : 22 mai 2023, 08:52

Bonjour à tous, je suis tout nouveau sur ce forum ! :)

Je suis actuellement entrain d'explorer les capacités d'Unreal pour le développement de jeux mobile. J'ai pour projet de faire un jeu très simple en top down où le joueur a la possibilité de "tirer" depuis la position du player une sorte de ligne permettant au jeu de calculer la vélocité et la direction auxquelles le player sera lancé pour effectuer un Dash.

Voici quelque dessin qui explique brièvement ce que je cherche à obtenir :
Image

Grosso modo, le cercle noir représente l'input du joueur (dans cet exemple le joueur a déjà "press and drag" vers l'arrière pour déterminer la puissance et la direction de son lancé. Il ne lui reste plus qu'à release son Input pour que le player effectue son Dash dans la direction et la vélocité choisi par le joueur.

Mon soucis est le suivant. Je trouve très très peu de ressource sur ce genre de gameplay en blueprint orienté mobile. Et je mouline depuis quelques jours pour trouver une solution efficace pour développer ce gameplay.

Quelqu'un aurait quelque pistes pour moi ?

Merci beaucoup.
Avatar de l’utilisateur
Mark Landers
Messages : 150
Inscription : 17 nov. 2022, 09:56

Salut,

Si je comprends bien c'est un peu le principe d'un arc ou d'un lance pierre, les inputs ne sont pas biens compliqués, tu as un input pressed qui permet de tendre et de viser, et un release pour faire partir le projectile. Avec le tactile tu peux visualiser le recul assez simplement pour la puissance/velocité.

Sinon niveau BP pas de soucis à te faire, mobile ou pas UE gère le code de la même façon.

J'ai trouvé quelques video pas mal sur le sujet, je poste ça d'ici si possible quelques jours.
Avatar de l’utilisateur
Bender
Site Admin
Messages : 385
Inscription : 15 sept. 2022, 13:14

Edit : Je déplace le sujet dans la nouvelle section
Diogène
Messages : 10
Inscription : 24 mai 2023, 13:27

Yop, c'est carrément possible rassures toi, rien de difficile même, tout ce que tu peux faire sur pc est transposable sur android, les seules limites seront les capacités franchement limitées des smarphones.

je te mets un petit screenShoot, j'ai fait mon bazard à l'arrache et sans tester (ouhhh pas bien ! mais pour tester ça me demanderai de créer trop d'autre chose, et j'ai la flème x) ) donc c'est carrément optimisable, notamment en le créant en macro, et en remplaçant les variables par des "wildcard". et c'est pas forcément la meilleure solution non plus dailleurs.
Mais ça devrais marcher.

concrètement pour l'explication "input touch" va s'activer quand tu clic sur ton écran,

-le press s'active une foi, au moment où tu presses , donc tu enregistres ta variable de location, que j'ai nommée "loc ini" ,

-moved s'active chaque fois que tu vas bouger ton doigt sur l'écran, tu peux donc en profiter pour récupérer la position actuelle de ton doigt, que j'ai enregistré dans la variable "loc moved"

-released va s'activer quand tu relache ton doigt... logique :) , a ce moment la il te suffit de récuperer la distance entre "loc ini" et "loc moved" , avec le petit node "distance (vector) , tu obtiens un float, que tu pourras utiliser pour calculer ta puissance de jet. pour l'angle , tu as le node "find look at rotation", qui te donne l'orientation pour aller du vector de départ vers le target, pour avoir l'inverse tu fais un + 180 à ton axe X (ou Y, ou Z j'en sait rien :oops: ca dépend comment ta tournée ton objet, et les rotations j'aime pas ça de toute façon :lol: )

note que cette solution utilise les positions spatiales de ton clic en jeu, et non de l'écran. c'est plus facile à faire, et plus adaptable sur les differents écrans, mais si tu utilises du zoom et du dezom il faudra le prendre en compte. de même sur des dezoom très importants il faudra changer ton mode de vue de caméra.
je tes donc mis au dessus des node pour faire l'équivalent en utilisant les position de ton clic sur l'écran. je te le ferai pas, c'est un poile plus compliqué, et pui c'est toujours bon de chercher, et pui, j'ai la flème :lol: mais c'est loin d'être impossible rassure toi.

note 2 tu pouvais aussi récupérer le vector "loc moved" sur l'action released, mais selon tes besoins, notamment si tu veux indiquer au joueur là ou il va tirer, il vaut mieu le faire sur le moved, mais à ce moment la, il faudra aussi faire l'étape du released au moment du moved, pour que tes données soient réactualisées en permanence...

voila voila, j'espère t'avoir aidé ;)

PS : c'est a fait dans le blueprint du player contrôleur ;)
Pièces jointes
Capture d'écran 2023-05-24 184430.png
Capture d'écran 2023-05-24 184430.png (157.42 Kio) Consulté 2096 fois
Avatar de l’utilisateur
DeadRioters
Messages : 2
Inscription : 22 mai 2023, 08:52

Hello Diogène !

Merci énormément pour cette belle explication ! Tout est super clair !

Au travail donc ! ;) Merci encore pour ton temps
Diogène
Messages : 10
Inscription : 24 mai 2023, 13:27

pas de soucis, tien je te mets quelques nodes qui pourraient te servire pour faire tes commandes sur androids ;)

le premier screen te permettra de récupérer quantité d'information de ton clic, à utiliser avec un input de clic.

le second screen te montre 3 déclencheurs qui s'activent, quand tu clic, touce 1 s'active au premier doigt, touch deux, quand tu en mets un deuxième... ma phrase fait un peu tendancieuse non ? : Lol:

le 3e screen détecte le pincement entre deux doigts, utile notamment pour le zoom, les valeurs sont a configurer dans le projet editor.
Pièces jointes
Capture d'écran 2023-05-25 053347.png
Capture d'écran 2023-05-25 053347.png (112.7 Kio) Consulté 2087 fois
Capture d'écran 2023-05-25 053435.png
Capture d'écran 2023-05-25 053435.png (26.92 Kio) Consulté 2087 fois
Capture d'écran 2023-05-25 053453.png
Capture d'écran 2023-05-25 053453.png (16.41 Kio) Consulté 2087 fois
Répondre