Se connecter

Informatique

Création de Jeux

Sujet : [UE4] Comment ajouter un Air Control à un Pawn (PhysicsBallBP) ?
1
Metallicar8
Niveau 33
17 juillet 2019 à 21:22:07

Salut !

Me revoilà ce soir à poster un deuxième topic suite à la création de mon projet. Il s'agit d'un jeu où l'on contrôle un rocher. Le BP est un Pawn, avec la physique de la balle. Pour faire court, j'ai déjà avancé et préparé 3 niveaux, mais en ce moment je souhaiterais revenir sur la maniabilité du personnage.

Comme il y a quelque phases de plateforme (rare cela dit, car ce n'est pas le genre recherché) et qu'avec la balle la physique ne prend pas en compte le air control contrairement au First Person par exemple, c'est assez injouable lorsque l'on souhaite atteindre une plateforme en sautant (obligé de reculer et prendre de l'élan plusieurs fois pour réussir).

Or, je ne suis pas parvenu à avoir un bon résultat, malgré les rares tutos dispo sur youtube à ce sujet pour simuler le air control.

-Soit le air control s'ajoute à la vélocité et ça devient clairement injouable. :hap:
-Soit je suis obligé d'y préciser plusieurs conditions et ça fonctionne mal.

Il faut que le moteur comprenne que le joueur saute ET qu'il retombe. Donc appliquer un air control uniquement quand il est en l'air (qu'il ne touche aucun objet), logique. :hap: Mais je ne sais pas comment le lui faire comprendre.

Comme vous pouvez le constater sur ce bout de node détaché du reste du BP du héro, j'ai mis comme condition d'appliquer le air control lorsque le joueur atteinte une certaine velocite sur les Z, qui correspondrait à une chute, mais il suffit que je descende une pente et ça foire tout. Et puis je veux pas que ça s'applique uniquement à une chute, mais également immédiatement après le saut. :noel:

https://www.noelshack.com/2019-29-3-1563390085-air-control.png
https://www.noelshack.com/2019-29-3-1563390657-fonction-air-control.png

Saut les autres images, c'est le fonctionnement du saut et le mouvement, si ça peut vous aider (réalisé au début par un khey d'ici dont j'ai oublié le pseudal)

https://www.noelshack.com/2019-29-3-1563390111-air-control-2.png
https://www.noelshack.com/2019-29-3-1563390271-air-control-3.png

Conslusion:

-Expliquer au moteur quand appeler la fonction Air control (quand l'acteur est dans le vide peu importe sa vélocité)
-Donner au moteur les bons axes de mouvement du air control (il va en avant quand je lui dit d'aller à gauche et en arrière quand je veux aller à droite :hap:)

J'aurai pu faire plus court, mais je voulais aller dans les détails pour bien me faire comprendre. :ok:
Merci.

Metallicar8
Niveau 33
17 juillet 2019 à 21:36:35

Et comme je suis sympa, j'ajoute un aperçu de mon projet. C'est simplemennt un bout de la map qui me permet de réaliser mes divers test. Ça pique les yeux.
https://www.noelshack.com/2019-29-3-1563392130-sysiphe-ball.png

razakhel
Niveau 10
18 juillet 2019 à 11:25:29

Je suis pas sûr d'avoir tout compris.

Déjà pourquoi tu choisis le pawn au lieu du character ? Avec le character tu as un movement component qui te permet d'ajuster plus facilement les paramètres de ton saut. Le seul truc que tu auras à faire ce sera d'ajuster la hauteur et la rayon de la capsule de collision dans le BP. En plus t'auras la fonction IsFalling? qui te dira si ton perso n'est pas au sol.

Encore une fois j'ai pas vraiment compris le problème que tu as, c'est un peu confus :hap:
A la rigueur si tu veux avoir plus ou moins de contrôle sur ton saut tu peux aussi ajuster le gravity scale avec un timeline node mais je suis pas sûr que ce soit ce dont tu as besoin, une reformulation du problème serait pas de trop... :hap:

Metallicar8
Niveau 33
18 juillet 2019 à 12:19:38

Le 18 juillet 2019 à 11:25:29 razakhel a écrit :
Je suis pas sûr d'avoir tout compris.

Déjà pourquoi tu choisis le pawn au lieu du character ? Avec le character tu as un movement component qui te permet d'ajuster plus facilement les paramètres de ton saut. Le seul truc que tu auras à faire ce sera d'ajuster la hauteur et la rayon de la capsule de collision dans le BP. En plus t'auras la fonction IsFalling? qui te dira si ton perso n'est pas au sol.

Encore une fois j'ai pas vraiment compris le problème que tu as, c'est un peu confus :hap:
A la rigueur si tu veux avoir plus ou moins de contrôle sur ton saut tu peux aussi ajuster le gravity scale avec un timeline node mais je suis pas sûr que ce soit ce dont tu as besoin, une reformulation du problème serait pas de trop... :hap:

Je pensais que c'était clair, mais en fait pas du tout.

Sans le air control, si je saute sans élan, ma balle ne bouge pas (si ce n'est sur l'axe des Z) et retombe à son point de départ. Ce qui est injouable si je veux sauter sur des plateformes. Je dois reculer, avancer puis sauter pour avoir un mouvement sur les X et Y. :hap: Je n'ai aucun contrôle de la balle lorsqu'elle est en mouvement en l'air.

J'ai pas pris le character car j'ai commencé avec le starter pack du ball game. C'est ce qu'on m'avait conseillé de faire ici pour obtenir le roulement de la balle (c'était très compliqué d'obtenir un roulement visuelle sans static mesh d'une balle, ce qui est présent par défaut dans le pack ball). Au début j'hésitais à entre le pack third person character et le ball game. L'un dans l'autre il y a avait des restrictions pour réaliser ce que je voulais.

Metallicar8
Niveau 33
18 juillet 2019 à 12:29:50

Après j'avais vu quelque part que je pouvais modifier la classe par défaut de mon personnage en cour de projet. Je sais plus comment j'avais fait :( Mais il me semblait que ça faisait buger certains éléments de gameplay du coup.

razakhel
Niveau 10
18 juillet 2019 à 13:51:11

Ok je comprends bien mieux lol

J'avais jamais testé le template rolling ball, je suis allé voir ça du coup. En vrai je pense que tu gagnerais plus de temps à utiliser un character plutôt qu'un pawn, j'ai regardé les blueprints (à te lire tu sembles utiliser les BP et pas le C++) qu'ils mettent pour obtenir l'effet de roulement dans l'event graph et ça prend juste quelques nodes.

A mon avis tu devrais :
-créer une classe character BP
-ajouter un static mesh component puis y mettre ta balle
-à partir de là ajuster la capsule de collision (height et radius) pour que ça enveloppe bien la forme de la balle
-implémenter les fonctions move forward et move right exactement de la même manière que pour ta classe initiale pour obtenir l'effet de roulement
-ajouter un springarm + une camera de la même manière que ta classe initiale pour ne pas avoir de vue subjective

A partir de là tu auras accès à la fonction jump du movement component (oublie pas de l'implémenter dans l'event graph) et tous les paramètres qui vont bien, je pense que c'est une meilleure approche pour un contrôle optimal sur ce dernier.

Si tu utilises le template de base j'ai l'impression qu'ils utilisent "autopossess player 0" dans le BP du pawn de base pour fixer la balle choisie par le joueur, je sais pas trop pourquoi ils ont fait ça. Pour que ça utilise ta classe à la place place ton nouveau BP sur la scène et mets "autoposses player 0" au lieu de "disable" (mets disable pour l'ancienne classe).

Le 18 juillet 2019 à 12:29:50 Metallicar8 a écrit :
Après j'avais vu quelque part que je pouvais modifier la classe par défaut de mon personnage en cour de projet. Je sais plus comment j'avais fait :( Mais il me semblait que ça faisait buger certains éléments de gameplay du coup.

D'habitude on place un player start component dans la scène puis on fixe la default pawn class dans le gamemode. Ici ils ont fait cette technique bizarre pour une raison qui m'échappe, peut-être pour le online ou un truc dans le genre :hap:

Si tout ça te convient pas t'auras juste à supprimer le nouveau BP et remettre player 0 au lieu de disable donc tu peux test cette méthode de façon safe :oui:

Metallicar8
Niveau 33
18 juillet 2019 à 18:32:02

Le 18 juillet 2019 à 13:51:11 razakhel a écrit :
Ok je comprends bien mieux lol

J'avais jamais testé le template rolling ball, je suis allé voir ça du coup. En vrai je pense que tu gagnerais plus de temps à utiliser un character plutôt qu'un pawn, j'ai regardé les blueprints (à te lire tu sembles utiliser les BP et pas le C++) qu'ils mettent pour obtenir l'effet de roulement dans l'event graph et ça prend juste quelques nodes.

A mon avis tu devrais :
-créer une classe character BP
-ajouter un static mesh component puis y mettre ta balle
-à partir de là ajuster la capsule de collision (height et radius) pour que ça enveloppe bien la forme de la balle
-implémenter les fonctions move forward et move right exactement de la même manière que pour ta classe initiale pour obtenir l'effet de roulement
-ajouter un springarm + une camera de la même manière que ta classe initiale pour ne pas avoir de vue subjective

A partir de là tu auras accès à la fonction jump du movement component (oublie pas de l'implémenter dans l'event graph) et tous les paramètres qui vont bien, je pense que c'est une meilleure approche pour un contrôle optimal sur ce dernier.

Si tu utilises le template de base j'ai l'impression qu'ils utilisent "autopossess player 0" dans le BP du pawn de base pour fixer la balle choisie par le joueur, je sais pas trop pourquoi ils ont fait ça. Pour que ça utilise ta classe à la place place ton nouveau BP sur la scène et mets "autoposses player 0" au lieu de "disable" (mets disable pour l'ancienne classe).

Le 18 juillet 2019 à 12:29:50 Metallicar8 a écrit :
Après j'avais vu quelque part que je pouvais modifier la classe par défaut de mon personnage en cour de projet. Je sais plus comment j'avais fait :( Mais il me semblait que ça faisait buger certains éléments de gameplay du coup.

D'habitude on place un player start component dans la scène puis on fixe la default pawn class dans le gamemode. Ici ils ont fait cette technique bizarre pour une raison qui m'échappe, peut-être pour le online ou un truc dans le genre :hap:

Si tout ça te convient pas t'auras juste à supprimer le nouveau BP et remettre player 0 au lieu de disable donc tu peux test cette méthode de façon safe :oui:

Merci pour la réponse :ok:

Je pense que j'implémenterai ça pour mon second projet (même jeu mais plus ambitieux). Celui-ci est une forme de tuto pour moi et le joueur. Je vais garder ce que j'ai là. J'ai essayé de faire ce que tu m'as dit, mais je me suis arrêté au moment où j'implémentais les mouvements basiques dans l'event graph.

Quand j'ai vu que je galérais à avoir un truc potable, je me suis dit qu'il me faudrait des jours pour implémenter le dash, les effets de caméra, le HUD, puis modifier tous les BP, Actors et Level qui interagissent avec le héro. Ça m'aurait fait perdre énormément de temps pour un problème que je peux malgré tout contourner en level design... Je garde ça pour la suite.

Par contre j'ai pas trop compris l'histoire du template et de autopossess player 0. :hap:

Lapintade
Niveau 18
18 juillet 2019 à 21:00:14

Hello, pour la proichaine fois merci d'utiliser le sujet epinglé, "j'aide les gens dans unreal engine".

1
Sujet : [UE4] Comment ajouter un Air Control à un Pawn (PhysicsBallBP) ?
   Retour haut de page
Consulter la version web de cette page