Se connecter

Informatique

Création de Jeux

Sujet : J'aide les gens dans Unity
TheRealMarco
Niveau 10
22 juillet 2018 à 09:36:35

Le 22 juillet 2018 à 00:32:16 GriendLuck a écrit :
Menfin je viens de trouver l'érreure enfin j'imagine que c'est sa ... j'espère.
Quand mon awake a fini j'ai mon spawner qui fait spawner 2 gameobject en même temps sauf que je ne trouve point le probleme.

Montre le code. :ok:

GriendLuck
Niveau 1
22 juillet 2018 à 14:24:14

le code de quoi j'en ais plus de 20
du spawner tu veux dire ?

[julvador]
Niveau 8
22 juillet 2018 à 16:01:04

Salut;
Je suis en train d'apprendre à utiliser Unity et je fait une sorte de petit RPG en 2D.
En ce moment j'ai 3 gameobjects, qui sont des Rigidbody Dynamic, le joueur, un mob et une épée.
Je les déplace avec transform.position, sauf lorsque qu'ils prennent des dégats et j'utilise AddForce pour faire une petite animation de Knockback.
Sauf que lorsque je place l'épée à cotée du joueur à chaque frame, pour qu'il la tienne, les deux objets se poussent entre eux et ça déplace mon joueur. Comment je peux faire pour éviter ça?

GriendLuck
Niveau 1
22 juillet 2018 à 16:13:09

tu dois cré un nouveau layer mettre ton personnage en layer player et mettre l'épée en not to hit le layer player
sinon c'est plus simple d'incrusté le sprite de ton épée avec celle de ton player pour faire qu'un seul gameobject

[julvador]
Niveau 8
22 juillet 2018 à 16:55:07

Merci! Ça marche bien! J'avais beau chercher je trouvais pas de solution. :merci:
Et non, je préfère éviter l'idée du sprite puisque je pense ajouter différents types d'armes (pistolet ou fusil par exemple).

GriendLuck
Niveau 1
22 juillet 2018 à 18:01:50

dans c'est cas la tu fais une mension event et grace a sa tu fais un sprite changer en modifiant les stats de damage

TheRealMarco
Niveau 10
22 juillet 2018 à 20:56:48

Le 22 juillet 2018 à 14:24:14 GriendLuck a écrit :
le code de quoi j'en ais plus de 20
du spawner tu veux dire ?

Ceux qui pose problème selon toi. Le spawner par exemple s'il fait apparaître deux gameobjects au lieu d'un, et celui qui appelle le spawner.

ajioze
Niveau 3
26 juillet 2018 à 01:41:20

Bonjour ! nouveau probleme --'

Je suis sur est que c est tout con mais Je ne parvient pas a introduire une image personnelle dans un UI image. D'apres les nombreuses démonstrations, il semblerait qu'un drag and drop dans la section "source image" suffirait, mais pour moi ca ne fonctionne pas. J'ai essayé avec différentes images, différents formats (.png .pdf), différents UI (image, button) mais rien n'y fait. lorsque je drag and drop, la souris n'affiche pas le petit + lorsque je passe au dessus de "none(Sprit)". J'ai également essayer d'ouvrir cette section en cliquand sur le cercle en bout de ligne ce qui ouvre une fenetre "select sprit" mais mes images n'apparaissent pas dans cette fenetre donc impossible de les choisir... Tout cela bien que mon image soit dans le dossier assets !

Si vous voyez comment regler ce type de probleme je suis à votre écoute :)
merci d'avance

ProRhinelSpray
Niveau 2
26 juillet 2018 à 04:31:14
ajioze
Niveau 3
26 juillet 2018 à 12:12:49

Le 26 juillet 2018 à 04:31:14 ProRhinelSpray a écrit :
Salut je t'ai répondu ici au cas où : https://www.jeuxvideo.com/forums/42-31-57073625-1-0-1-0-besoin-d-un-aide-basique-sur-unity-3d.htm#post_955769433

Merci beaucoup ! C'etait exactement le porbleme :) ca marche a présent, je vais surment refaire appel à vous car ce n'est que le début de mon projet... :cool:

Le_Tryall
Niveau 8
26 juillet 2018 à 18:06:46

Hey, ça fait un moment que je cherche une réponse convenable pour mon soucis, j'avance plus et j'ai vraiment besoin de l'aide de quelqu'un d'expérimenté sur le scripting C# avec Unity.

J'ai un projet de jeu Tour Par tour. Comme j'ai bien fait les choses, ma logique de jeu tient en deux/trois script (On va appeler ces script des "GameManager"). Ces GameManager supportent donc toute la logique. En théorie je pourrais jouer à mon jeu uniquement dans l'inspecteur.

D'un autre côté j'ai un bon nombre de script de mise en forme, des feedbacks visuels, des drag and drop. Ils sont découpés en pleins de petits scripts qui gèrent chacun un truc. Genre j'ai un script qui permet le drag en drop, l'autre qui initialise la position des GameObjects. Un autre pour leurs apparences etc...

Au final, j'aimerai que mes GameManagers puissent "call" une méthodes au choix sur tous les scripts "visuels", à eux de voir si ils sont capables de listen ou pas. mais que ces même scripts (ceux qui sont visuels donc) puissent eux même call vers les GameManagers pour donner des ordres sur la logique du jeu.

Comme j'ai envie d'avoir une architecture propre, et pas que des spaghetti. J'ai cherché des systèmes d'events. De l'Interface, en passant par les UnityEvent, jusqu'aux broadcast. Rien n'à l'air de résoudre mon problème.

Dans l'idée je souhaiterait utiliser des systèmes proche des Start(){} ou OnValidate(){} qu'Unity propose déjà. Mais comme mes scripts peuvent aussi bien recevoir des ordres qu'en donner, faudrait un moyen par trop lourd à mettre en place. Ce serait dommage de d'avoir des noms de méthodes et des calls à faire dans tous les sens si je dois faire un système portant un nom différent et assignant de nouvelles variables à chaques scripts.

Pour récapituler :
Comment faites vous une architecture propre ?
Est-il possible de créer une function "On_SomethingCall () { }" sur une multitude de script, et ainsi tous les appeler ?
Si oui conseillez-vous cette façon de faire ?

Merci beaucoup pour votre aide :)

TheRealMarco
Niveau 10
26 juillet 2018 à 19:33:30

C'est pas du tout à la mode, mais personnellement j'utilise des Singleton. :ok:

Tu as une implémentation ici : http://wiki.unity3d.com/index.php/Singleton

Après, t'as plus qu'à faire :
public class GameManager : Singleton<GameManager> { }

A faire uniquement si tu n'as qu'un seul GameManager avec une unique instance.

De cette manière, toutes les classes pourront faire GameManager.getInstance().CallSomething().

J'utilise aussi le patron de conception MV. C'est comme MVC, sauf que les contrôleurs sont sur les GameObjects donc pas besoin. :noel:
En gros, j'ai un Singleton Vue, qui répertorie tous les éléments visuels, et, via des fonctions, permet des comportements. Ça se prête pas à des gros jeux en 3D.

Le_Tryall
Niveau 8
26 juillet 2018 à 21:20:29

Je vois ! Mon jeu n'est pas quelque chose de complexe, les comportements sont prévisibles et se doivent de l'être.

Mais de ce que je vois du Singleton, on est obligé d'écrire la fonction entière dans le manager donc ?

J'ai trouvé un truc intermédiaire entre temps. J'utilise un GameManager parent de tous les autres components (visuels comme logique). avec à l'intérieur :

 public class Root_Manager : MonoBehaviour {

    public void callevent(string eventname){
        BroadcastMessage(eventname);
    }

    public void callevent(string eventname, object values){
        BroadcastMessage(eventname);
    }
}

J'y accède depuis les autres scripts avec un :


transform.root.GetComponent<Root_Manager>().callevent("On_Display_Board");

Il me suffit ensuite de créer une fonction n'importe où dans mes childs qui porte le même nom que le paramètre "string" (ici "On_Display_Board") que je veux appeler. Mais bien évidemment, utiliser des strings pour ça, c'est pas très conseillé vu que la compilation ne détecte pas si j'ai fais une erreur. Mais au moins il call toutes les fonctions du même nom. Et on peut adapter la fonction par rapport au script qui le contient.

Si vous avez une autre solution qui prend pas en compte les strings je suis preneur !

Pseudo supprimé
Niveau 6
26 juillet 2018 à 21:36:16

Salut !

Je souhaite faire un jeu unique mais en même temps pas trop lassant, j'ai fait les décors et les différents éléments mais j'ai envie de faire plusieurs autres choses dedans mais je n'ai aucune idée de comment m'y prendre (J'ai aucune notion en Unity Script, j'ai les notions uniquement en HTML5, Python, CSS et un peu de C# qui ressemble à UnityScript) mais avant voici le type de jeu :

Dimension : 2D;
Plateforme : ___;
Création des assets : Unity Store, Kenney et moi;

-Faire bouger l'arrière plan pour donner l'impression que le personnage avance (Les animations du personnage sont déjà faites);

-Faire en sorte d'afficher parmi 100 messages (Voire plus), un message au hasard toutes les 10 secondes
(Plus d'explication en privé si quelqu'un ne comprend pas);

Ceux qui veulent m'aider s'il vous plait contactez-moi en privécar je développe sur une plateforme privé au public,je n'ai pas le droit de trop dans un endroit pareil (Le forum) :rire:

Je donnerai les photos du jeu en privé et quelques renseignements tel que la plateforme, le type etc...

Merci :)

TheRealMarco
Niveau 10
26 juillet 2018 à 22:06:18

Le 26 juillet 2018 à 21:20:29 Le_Tryall a écrit :
Il me suffit ensuite de créer une fonction n'importe où dans mes childs qui porte le même nom que le paramètre "string" (ici "On_Display_Board") que je veux appeler. Mais bien évidemment, utiliser des strings pour ça, c'est pas très conseillé vu que la compilation ne détecte pas si j'ai fais une erreur. Mais au moins il call toutes les fonctions du même nom. Et on peut adapter la fonction par rapport au script qui le contient.

Si vous avez une autre solution qui prend pas en compte les strings je suis preneur !

Content que tu es trouvé une solution, je connaissais pas BroadcastMessage. Ça a pas l'air très propre, mais si c'est un petit jeu et qu'il ne nécessite pas de maintenance ça doit suffire.

TheRealMarco
Niveau 10
26 juillet 2018 à 22:07:25

Le 26 juillet 2018 à 21:36:16 Game_vita33 a écrit :
Salut !

Je souhaite faire un jeu unique mais en même temps pas trop lassant, j'ai fait les décors et les différents éléments mais j'ai envie de faire plusieurs autres choses dedans mais je n'ai aucune idée de comment m'y prendre (J'ai aucune notion en Unity Script, j'ai les notions uniquement en HTML5, Python, CSS et un peu de C# qui ressemble à UnityScript) mais avant voici le type de jeu :

Dimension : 2D;
Plateforme : ___;
Création des assets : Unity Store, Kenney et moi;

-Faire bouger l'arrière plan pour donner l'impression que le personnage avance (Les animations du personnage sont déjà faites);

-Faire en sorte d'afficher parmi 100 messages (Voire plus), un message au hasard toutes les 10 secondes
(Plus d'explication en privé si quelqu'un ne comprend pas);

Ceux qui veulent m'aider s'il vous plait contactez-moi en privécar je développe sur une plateforme privé au public,je n'ai pas le droit de trop dans un endroit pareil (Le forum) :rire:

Je donnerai les photos du jeu en privé et quelques renseignements tel que la plateforme, le type etc...

Merci :)

Tu peux poser des questions assez générique sur le forum, pour qu'on puisse te répondre sans dévoiler.

Typiquement :

-Faire en sorte d'afficher parmi 100 messages (Voire plus), un message au hasard toutes les 10 secondes

On peut te répondre sans que ça donne trop d'infos sur ton jeu.

Pseudo supprimé
Niveau 6
26 juillet 2018 à 22:32:05

D'accord, donc tout le monde peut répondre ici, après pour la plateforme j'annoncerai peut être quand le jeu sera publié pour éviter les choses illégales.

Donc du coup est-ce que quelqu'un à une idée pour au moins faire bouger le décor :svp: ?

Merci :coeur:

TheRealMarco
Niveau 10
26 juillet 2018 à 22:33:23

Le 26 juillet 2018 à 22:32:05 Game_vita33 a écrit :
Donc du coup est-ce que quelqu'un à une idée pour au moins faire bouger le décor :svp: ?

Merci :coeur:

https://pixelnest.io/tutorials/2d-game-unity/parallax-scrolling/

Pseudo supprimé
Niveau 6
26 juillet 2018 à 22:36:02

Merci ;) ça a été très rapide et je suis sûr avoir trouvé la solution (Avec Unity 5.6 car la plateforme supporte que ça), je vais essayer et je te renvoie le résultat :ok:

Pseudo supprimé
Niveau 6
26 juillet 2018 à 23:48:02

Et voilà j'ai suivi le tutoriel, donc sans vouloir faire mon rabat-joie, c'est pas fluide :/ Désolé :-(
Tout est bien mais il y a un problème, on voit très bien quand le background avance des fois, l'image se coupe pendant 1 seconde vers la partie gauche puis ça reprend mais on voit bien 'le trou d'Unity" à côté, au moins c'est quelque chose de résolu, je vais quand même essayer de rendre plus fluide la chose

Sujet : J'aide les gens dans Unity
   Retour haut de page
Consulter la version web de cette page