Toi aussi deviens indéveloppeur [Unity/UE4 pour platformers 2D osef]
L'homme sait faire du pain grâce à Dieu
Au pays des merguez
11 392 posts
depuis le 15/07/2008
hichanbis

Hello, je me prends la tête pour mettre en place la même camera que Lost Odyssey.

Ici par exemple entre 06:49 et 07:40 la caméra bouge tout le temps et automatiquement en fonction de la position du joueur.
On fait comment ça sous Unity? Zone gavée de triggers qui déclenchent des coroutine de lerp de camera?
Animation de caméra basée sur la position?

J'ai du mal à imaginer que les devs aient codé un trigger tous les 3 pas...

Edit: Apparemment il faut mettre la caméra sur rail via une "Spline". Ca parle à quelqu'un?

Edit par hichanbis (15/11/2016 18h08)

Singe Gobelin
3 830 posts
depuis le 7/09/2008
Sage-Goblin

Réponse au message de hichanbis posté 15/11/2016 15h03

Une spline c'est une courbe (courbe de bézier, b-spline, nurbs ou autre).
Je connais pas unity, mais en gros tu dessines une courbe (commence par une droite ça sera plus simple), et tu places ta caméra sur ta courbe (je sais pas si tu manipules une matrices ou des coordonnées bien que ça change pas grand chose). Et en fonction du temps ou bien de la position de ton personnage tu mets à jour les coordonnées de ta caméra par rapport à ta courbe.

.
6 061 posts
depuis le 30/04/2007
...
y a-t-il qqun pour rebrancher le cerveau de binouz
4 509 posts
depuis le 17/06/2010
Binouz

Réponse au message de ... posté 15/11/2016 19h26

Elle est trop cool la prez de la gdc j'avais jamais vu smiley115

.
6 061 posts
depuis le 30/04/2007
...
L'homme sait faire du pain grâce à Dieu
Au pays des merguez
11 392 posts
depuis le 15/07/2008
hichanbis

Merci à vous.
En creusant un peu cette histoire de spline j'ai trouvé un asset qui fait exactement ce que je veux.

https://www.assetstore.unity3d.com/en/#!/content/617
http://support.jasperstocker.com/camera … mera-demo/

La démo c'est vraiment ce que je veux implémenter et l'asset a une GUI pas dégueu pour faire ça assez facilement.

J'ai réussi à me faire une petite anim de caméra rapidement avec Hermite Spline Controller hier soir, c'est cool mais par contre impossible de mettre le follow en relation avec la position d'un objet de la scene.

Du coup j'ai voulu coder moi-même le truc de positionner la cam sur le point le plus proche de la spline en fonction du joueur sur la map mais j'ai rien trouvé sur les forums unity pour une fois feelsbad
Et faire ça avec une animation ça me paraît encore plus compliqué...

Donc bon pour 30 euros on va pas faire la pince je crois (ça devrait être de base dans unity mais bon).

Edit par hichanbis (16/11/2016 12h02)

J'ai comparé avec un vrai chrono et ce qui est sûr, c'est qu'on va pas à 200km/h
4 784 posts
depuis le 30/07/2008
Milka-aux-noisettes

Réponse au message de hichanbis posté 16/11/2016 11h59

Une que j'avais trouvé intéressante à l'époque smiley8

Edit par Milka-aux-noisettes (16/11/2016 23h57)

y a-t-il qqun pour rebrancher le cerveau de binouz
4 509 posts
depuis le 17/06/2010
Binouz
hichanbis a écrit :

(ça devrait être de base dans unity mais bon).

Ca c'est tout le business de Unity smiley12 "ça devrait être de base". En tout cas le plugin que t'as trouvé est connu et à mon avis ça te simplifiera carrément la vie smiley1

Réponse au message de Milka-aux-noisettes posté 16/11/2016 23h51

Très sympa aussi ! En vrai je me suis jamais trop intéressé au sujet car j'ai eu l'occaz de bosser que sur de la caméra fixe, ou de la cut scene, ou maintenant de la VR ou j'ai plus ce problème, mais ptin c'est un boulot monstrueux.

Edit par Binouz (17/11/2016 10h12)

L'homme sait faire du pain grâce à Dieu
Au pays des merguez
11 392 posts
depuis le 15/07/2008
hichanbis

Oé pas mal la vidéo de God Of War, on voit effectivement que leur système sur rail c'est une anim de camera mappée à la position du joueur. Exactement ce dont parlait Tim.
Le problème de bosser avec une longue animation c'est que c'est plus chiant à ajuster si je veux changer quelque chose. Et contrairement à une spline j'ai pas de possibilité de connecter deux animations. Enfin je visualise le degré de complexité vs ma productivité avec l'asset camera path animator et y a pas photo.

Merci pour votre aide en tout cas. C'est clair pour moi maintenant.

Edit: Je persiste à dire que les splines, et d'une manière générale tout ce qui est lié aux cinématiques devrait être intégré à Unity.

Edit par hichanbis (17/11/2016 12h01)

Mon père est un pigeon
1 797 posts
depuis le 29/11/2010
DarkAnother

Vous savez ce que ça vaut les formations sur Udemy ? Y'a des promos de dingue jusque demain !

L'homme sait faire du pain grâce à Dieu
Au pays des merguez
11 392 posts
depuis le 15/07/2008
hichanbis

Réponse au message de DarkAnother posté 17/11/2016 13h14

https://www.udemy.com/unity-5-technique … s-quickly/

Oh god l'accent du mec, David Cage dans les cordes

Perso je préfère bosser sur mon jeu et apprendre en rencontrant les problèmes au fur et à mesure.
Y a plein de tutos gratuit partout sur tous les sujets, la difficulté consiste souvent à savoir ce qu'on cherche en fait, une fois qu'on a le mot clé c'est vraiment la fête.

Edit par hichanbis (17/11/2016 16h45)

y a-t-il qqun pour rebrancher le cerveau de binouz
4 509 posts
depuis le 17/06/2010
Binouz

Réponse au message de DarkAnother posté 17/11/2016 13h14

Bah euh, la course Unity qu'à link Hichanbis ça a l'air d'être de l'arnaque, en mode "téléchargez le plugin qui fait tout tout seul, regardez ! Vous allez faire un village entier en appuyant sur un bouton !"

Pas sur que ça te forme à grand chose smiley3 Effectivement le mieux c'est d'avoir une idée et de creuser. Y a aussi Unity Learn qui est gratos et qui fait tout le tour des bases d'Unity. Donc bon ça m'a pas l'air d'être une affaire en or ce truc...

Edit par Binouz (17/11/2016 19h14)

TranspirationGO
Dimension post post cyberpunk
814 posts
depuis le 1/04/2016
TrinitronGO

j'essaie d'avoir ce genre d'esthétique

3ReKwbyzxAlk2YzW0PGD4LgAUrgP8klDelOGstQ7n4kdu3Vnb1ac9CORlr5mElpaWA=h900
mdEUjhC8hUea0CO5MK_E-OJYByNDr-ZiolQ7jJugIRG7ohb3F0WEvMRauU35wh3JSDo=h900
bB7xEwRQD-7zJrorhpexoftiz61pqZHWdv8PeGWg23ODohqjckVimfQbdalskQUVNJFX=h900

mais comme je suis une brêle sur maya je sais pas comment faire. c'est possible de coloriser uniquement les arêtes ?

.
6 061 posts
depuis le 30/04/2007
...
L'homme sait faire du pain grâce à Dieu
Au pays des merguez
11 392 posts
depuis le 15/07/2008
hichanbis

Je me cherche un pc portable gamer pour coder dans de meilleures conditions que mon canapé du salon et ma table basse qui font mal au dos. Mais du coup j'hésite entre 15 et 17 pouces.

15 pouces c'est gérable pour faire du Unity ou faut vraiment du 17 qui pèse une tonne ?
J'ai entendu dire qu'un 17 chauffe généralement moins qu'un 15...

Je risque d'avoir quelques déplacements réguliers à partir de la rentrée d'où la question de la portabilité.

Edit par hichanbis (16/05/2017 17h09)

Je travaille chez l'Euromaster du JV
1 165 posts
depuis le 26/03/2007
nanarcorp

prends un 15 et tu branches en hdmi un écran 24" et terminado

L'homme sait faire du pain grâce à Dieu
Au pays des merguez
11 392 posts
depuis le 15/07/2008
hichanbis

Réponse au message de nanarcorp posté 16/05/2017 19h29

J'avoue c'est peut-être le meilleur des deux mondes en fait.

L'homme sait faire du pain grâce à Dieu
Au pays des merguez
11 392 posts
depuis le 15/07/2008
hichanbis

Hola, j'ai un problème d'accès concurrent à une méthode qui me rend dingue.
En donjon quand un ennemi entre dans le périmètre du joueur il peut déclencher une attaque et demander l'avantage.
L'ennemi peut en faire de même.
Le problème c'est que de temps en temps les deux appels ont lieu pile en même temps (même frame je suppose) et je ne parviens pas à empecher que le deuxieme demandeur de l'avantage ne l'obtienne pas.

Mon code simplifié coté Ennemi

void OnTriggerEnter(Collider other)
    {
        if (other.tag == "Player")
        {
           TransitionManager.Instance.GetAdvantage(Advantage.Enemy);
        }
    }

Coté player:

void OnTriggerEnter(Collider other)
    {
        if (other.tag == "Enemy")
        {
           TransitionManager.Instance.GetAdvantage(Advantage.Player);
        }
    }

Et maintenant le code du Manager qui donne l'avantage (advantageGiven est initialisé à false évidemment):

public void GetAdvantage(Advantage advantage)
    {
        if (advantageGiven)
            return;
        
        advantageGiven = true;
        this.advantage = advantage;
        advantageGiven = false; //edit: j'avais oublié cette instruction de reset qui a l'air d'être le coeur du souci
    }

Normalement la partie   

if (advantageGiven)  return;

devrait assurer que le deuxième arrivé ne puisse pas récupérer l'avantage.
En pratique il y arrive quand même de temps en temps.
Help unityrama!

Edit par hichanbis (25/05/2017 08h51)

.
6 061 posts
depuis le 30/04/2007
...

Réponse au message de hichanbis posté 25/05/2017 01h08

J'ai l'impression que les deux se déclenchent en même temps, puisque les deux ont un OnTriggerEnter qui détecte l'entrée de l'autre.
Si t'utilises Debug.Log() tu peux voir combien de fois est appelé GetAdvantage (et éventuellement, qui l'appelle ?)

L'homme sait faire du pain grâce à Dieu
Au pays des merguez
11 392 posts
depuis le 15/07/2008
hichanbis

Réponse au message de ... posté 25/05/2017 04h16

Oui c'est bien mon problème !
Les deux appellent la méthode en même temps mais je veux ne donner l'avantage qu'une fois. D'où mon boolean.

Edit: ok le debug me montre que les deux méthodes sont bien appelés quasi en même temps. C'est l'instruction advantageGiven = false; qui fout la merde.
Si je l'enlève je n'ai plus le souci.

Je dois trouver un moyen de reset le boolean plus tard et pas immédiatement après avoir donné l'avantage dans la même méthode.
Edit: Voila maintenant c'est bon.
Je remets la variable à false bien plus tard (quand le combat est loadé) et c'est nickel.

Edit par hichanbis (25/05/2017 09h34)

L'homme sait faire du pain grâce à Dieu
Au pays des merguez
11 392 posts
depuis le 15/07/2008
hichanbis

Bonjour Unityrama, I need help svp:

Durant mon combat au tour par tour, si le perso doit faire une attaque, je veux que le perso:
- Court vers la cible (anim 1)
- Attaque (anim2)
- Fasse un petit saut pour revenir à sa position (anim3)

a la jrpg quoi.
Sans trop m'y connaitre en animation, j'ai réussi à le faire avec un truc assez euh...pourri.

En gros mon script:

transform.LookAt(target.transform);

//Déclenche l'anim de course (qui elle même déclenche la suivante etc)
anim.SetTrigger("Attack");

//le perso bouge en même temps que l'anim de course
yield return StartCoroutine(MoveOverSpeed(gameObject, target.transform.position, 10f));

// ici je mets une vieille attente en dur c'est laid mais ça permet de pas revenir en arrière avant la fin de l'attaque
yield return new WaitForSeconds(1.2f);

//le perso rentre en même temps que l'anim de saut
yield return StartCoroutine(MoveOverSeconds(gameObject, initPos, 1f));

Et mon enchainement d'animations:cbsGmzN.png
Attack est mal nommé en fait c'est "Run" hein.


Y a une façon moins dégueulasse artisanale de faire ça?
Des animations events?
Des anims root motion qui font vraiment bouger le perso c'est mieux?
Je fais comment pour éviter le wait en dur?

Edit par hichanbis (5/06/2017 16h02)

Fiché S
Oops,I did it again!
6 111 posts
depuis le 12/03/2007
Britney

Disgaea 6 by Hichanbis smiley18

J'ai envie de t'aider mais j'y connais rien... smiley2

Lulu le rebelle
8 771 posts
depuis le 28/03/2011
Lucien Brémart

Essaye de faire un shadowmapping sur tes shadders asymétriques. Après tu peux overtrader les facecube 3d pour avoir un lissage métrique mais tu risques de rendre le tout clockless ce qui doit être ta dernière envie...

Edit par Lucien Brémart (5/06/2017 17h48)

Tingle tingle kooloo limpah
5 788 posts
depuis le 14/05/2007
KamiOngaku
1994 : la fin du jeu vidéo.
5 435 posts
depuis le 27/04/2006
Tchiko

Réponse au message de Lucien Brémart posté 5/06/2017 17h24
Un peu Peach tout ça.
Pour la peine je le ressors.

Lulu le rebelle
8 771 posts
depuis le 28/03/2011
Lucien Brémart

Peach est MIA dans la réalité virtuelle feelsbad

Membre
17 posts
depuis le 6/11/2013
mmppprrrrfffffchier

Je ne connais pas super bien Unity, mais en cherchant rapidement j'ai trouvé ça : https://docs.unity3d.com/Manual/animedi … vents.html, j'ai l'impression que ça pourrait résoudre ton problème

Pour éviter le wait en dur dégueulasse, l'idéal serait effectivement que tu puisses faire un truc du genre

OnSwingAnimationFinished()
{
    StartAnimation(BackwardJump);
    MoveToPosition(pos);
    etc
}
et comme ça pour chacune de tes étapes d'animation

L'autre solution est effectivement que l'animation gère directement elle-même le déplacement du personnage, mais ce n'est pas forcément souhaitable, par exemple si tu as envie de gérer finement les déplacements par toi-même dans le code.

Sinon, je ne sais pas si le moteur d'animation d'Unity le permet, mais une autre solution pas mal serait d'utiliser des animations paramétrées (en gros, tu lances une animation de saut avec en paramètre la position de départ et la position d'arrivée, et le moteur se démerde pour jouer l'anim en faisant coller ça à tes contraintes).

Voilà, c'est un peu en vrac, j'espère que ça t'aidera...

L'homme sait faire du pain grâce à Dieu
Au pays des merguez
11 392 posts
depuis le 15/07/2008
hichanbis

Réponse au message de mmppprrrrfffffchier posté 6/06/2017 20h58

Hello en fait c'est bon j'ai passé la journée la dessus (entre autres trucs) et j'ai un truc un peu propre ou j'attends la fin de l'animation dans une boucle while. Je copie colle le code quand je serai sur l'ordi.
...ou pas en fait je pense que ça n'intéresse personne smiley1

Merci pour l'aide en tout cas.

Edit par hichanbis (6/06/2017 23h57)

L'homme sait faire du pain grâce à Dieu
Au pays des merguez
11 392 posts
depuis le 15/07/2008
hichanbis

Bonjour les amis je pète un cable sur un gros problème de noob.

Avec ma caméra je fais un lookAt vers un gameObject (mon player).
Sauf que du coup la caméra regarde les pieds (vu que le player a une position 5, 0, 5 ça me paraît normal)
Alors j'essaye un petit truc tout bête dans mon script de camera:

Vector3 playerPos = battleManager.GetCurrentPlayer().transform.position.;
Vector3 offset = new Vector3(0f, 1.5f, 0f);
transform.LookAt(playerPos + offset);

Et ça ne marche pas du tout. La caméra continue de regarder les pieds.
Je suis pas très bon en offset mais là ça me laisse perplexe.

Edit: OK ca marche j'avais juste laissé trainer un autre truc ailleurs dans le code qui bougeait la cam.

Edit par hichanbis (9/06/2017 14h07)

.
6 061 posts
depuis le 30/04/2007
...

Réponse au message de hichanbis posté 9/06/2017 13h55

Sinon plutot que mettre l'offset en dur, tu devrais target un gameobject vide dont le parent serait ton perso.
Du coup tu peux le positionner ou tu veux, meme animer cet offset avec les animations, ca peut s'adapter a un petit ou grand personnage...

L'homme sait faire du pain grâce à Dieu
Au pays des merguez
11 392 posts
depuis le 15/07/2008
hichanbis

Réponse au message de ... posté 9/06/2017 15h51

Pas con du tout
Au final pour le problème de la taille du perso j'ai fait un truc à base de capsule collider.height mais ton idée est mieux.

Edit par hichanbis (9/06/2017 20h07)

L'homme sait faire du pain grâce à Dieu
Au pays des merguez
11 392 posts
depuis le 15/07/2008
hichanbis

Binouz, HEEEEELLLLLPPPPP!:

nbCoroutines = battleAction.targets.Count;
foreach (GameObject target in battleAction.targets.ToList())
    {  
      //nbCoroutines décrémenté à chaque fin d'exec de coroutine TakeDamage
      StartCoroutine(target.GetComponent<BattleScript>().TakeDamage(dmg)); 
    }

   //c'est sensé attendre la fin de toutes les coroutines
    while (nbCoroutines > 0)
      {
          yield return null;
      }

Debug.Log("end wait");

foreach (GameObject target in battleAction.targets.ToList())
    {
    target.GetComponent<BattleScript>().DestroyIfDead();
    }

La méthode DestroyIfDead est exécutée avant le log "end wait". Du coup ben ça détruit l'objet avant la fin de la coroutine TakeDamage (qui attend la fin de l'animation d'impact/mort).
... WHY ?? smiley101

Avant ça je faisais yield return StartCoroutine(TakeDamage(dmg)) du coup ça temporisait bien mais ça faisait tout séquentiellement, y compris le destroy.
Alors que là je veux que mes unités encaissent les dégats en même temps et se détruisent toutes ensuite.
HEEELLLPPP

Edit par hichanbis (12/06/2017 14h52)

Mon père est un pigeon
1 797 posts
depuis le 29/11/2010
DarkAnother

Réponse au message de hichanbis posté 12/06/2017 14h42

T'as lâché ton job pour développer ton jeu ou quoi ? smiley115

Non pas que ce soit mal hein

Fier comme un beauf.
5 516 posts
depuis le 29/11/2007
Marks

Réponse au message de hichanbis posté 12/06/2017 14h42

je connais pas Unity, mais dans ton deuxième bloc, tu peux pas faire un

    while (nbCoroutines > 0)
      {
          yield return null;
      }

pour temporiser de la même façon ?

ça fait longtemps que j'ai pas utilisé de la coroutine mais je sais pas si ça fout pas la merde au niveau ordonnancement dans ton cas

L'homme sait faire du pain grâce à Dieu
Au pays des merguez
11 392 posts
depuis le 15/07/2008
hichanbis

Réponse au message de Marks posté 12/06/2017 15h00

Même résultat smiley28

Réponse au message de DarkAnother posté 12/06/2017 14h53

Je suis au bureau là smiley97
Je profite des temps morts pour coder, genre le matin avant 9h30 et entre midi et deux.
Bon ça c'est en théorie, en pratique quand j'ai un bug ça déborde facilement, comme maintenant quoi.

Edit par hichanbis (12/06/2017 15h33)

L'homme sait faire du pain grâce à Dieu
Au pays des merguez
11 392 posts
depuis le 15/07/2008
hichanbis

Ok c'était encore un truc de golmon.
Dans ma methode DestroyIfDead je détruisais à chaque fois sans faire de if.
Du coup la première attaque tuait toujours la cible et après ça lançait la deuxième attaque dans le vide et ça crachait des exceptions.

La fatigue caged

y a-t-il qqun pour rebrancher le cerveau de binouz
4 509 posts
depuis le 17/06/2010
Binouz

Oups j'étais pas la right in time :p

Ton code avait rien de problèmatique j'aurai pas pu t'aider donc oui ca devait venir d'ailleurs smiley3

L'homme sait faire du pain grâce à Dieu
Au pays des merguez
11 392 posts
depuis le 15/07/2008
hichanbis

Les cutscenes in game où faut synchroniser les déplacement et anims de plusieurs objets + la caméra + les dialogues textes + le son et le tout de manière séquencée ça serait pas un peu bordélique dans Unity?
Je veux dire faut vraiment tout scripter soi-même à la mano tel un chinois en 2017?

Fiché S
Oops,I did it again!
6 111 posts
depuis le 12/03/2007
Britney
.
6 061 posts
depuis le 30/04/2007
...

Réponse au message de hichanbis posté 20/06/2017 01h12

Il y a la cinematic timeline qui arrive qui va changer tout ca.

L'homme sait faire du pain grâce à Dieu
Au pays des merguez
11 392 posts
depuis le 15/07/2008
hichanbis

Réponse au message de ... posté 20/06/2017 01h55

Oui juste après avoir posté j'ai Google un peu et je suis tombé sur un tuto

J'ai la 5.6 apparemment j'ai le truc en beta donc je vais tester.

Sinon comment tu gères le séquencement d'événements dans une scène? Genre d'abord une cutscene, ensuite la caméra comme ça et je laisse le joueur bouger puis un truc scripte arrive et ne se reproduira plus jamais etc.
Et surtout comment tu le gères de manière à pouvoir le maintenir ou changer rapidement.
Y a des best practices ou je blinde mon code de conditions ?

Edit par hichanbis (20/06/2017 08h40)

Trisomie 51
2 942 posts
depuis le 2/11/2008
VV51

Question : je suis un néophyte complet, j'ai juste développé du HTML/CSS donc rien à voir, je maîtrise relativement bien la suite Adobe, pour le fun j'ai installé Unity et je suis actuellement les cours d'Openclassrooms, concrètement des Gameramiens ont ils déjà débuté par ce biais là, et si oui, jusqu'où peut aller la conception en autonomie solo d'un jeu ?

Je compte pas particulièrement faire un truc compliqué, c'est plus pour le délire, mais les possibilités ont l'air nombreuses et intéressantes. Après, je suppose qu'être en nombre réduit augmente le temps de travail et donc le risque de faire un truc osef clone de milles jeux sur le PSN feelsbad

L'homme sait faire du pain grâce à Dieu
Au pays des merguez
11 392 posts
depuis le 15/07/2008
hichanbis

Réponse au message de VV51 posté 20/06/2017 13h59

Connaître la programmation objet me paraît quand même indispensable.
Essaie de te former au C# ou plus facile pour démarrer, au Java, c'est pas bien compliqué.

Fier comme un beauf.
5 516 posts
depuis le 29/11/2007
Marks

Réponse au message de VV51 posté 20/06/2017 13h59

Avoir des bases de programmation semble quand même être un bon pré-requis.

Je touche pas au dév. de JV mais à voir ce que Hichanbis poste régulièrement, ça touche à tous les secteurs de la programmation (du parallélisme, de la géométrie algorithmique, de la POO...)

L'homme sait faire du pain grâce à Dieu
Au pays des merguez
11 392 posts
depuis le 15/07/2008
hichanbis

Bon je galère sur un point de UI qui me rend fou et je ne trouve rien sur google.
J'essaie de faire en sorte que si le joueur a choisi une abilité qui attaque toutes les cibles, ça highlight tous les boutons de cibles ennemies.
Une image vaut mieux que 1000 mots:

WiETAOq.jpg

Ici on voit bien que tous les boutons target sont sélectionné/highlighté.

Problème je vois vraiment pas comment higtlighter ou séléctionner plusieurs boutons en même temps dans mon code.

J'ai fait un truc comme ça:

foreach (GameObject target in targets)
        {
            GameObject targetButton = Instantiate(targetButtonTemplate, targetsPanel.transform, false) as GameObject;
            targetButton.transform.Find("TargetName").GetComponent<Text>().text = target.name;
            targetButton.GetComponent<Button>().Select();
         }

Sauf qu'évidemment ça selectionne les boutons un par un donc au final y a que le dernier qui est select.
Et y a juste pas de méthode pour dire Select avec une liste de game objects. Enfin je trouve pas.

Help les amigos.

Edit: ok je crois que je peux feinter en séléctionnant le premier et en désactivant les autres puis en leur donnant une apparence highlighted when disabled

Edit par hichanbis (10/07/2017 21h19)

Steve
1 549 posts
depuis le 1/02/2010
Sander

Vous utilisez le Python pour vos jeux ?
Je dois apprendre le langage, mais pour une autre utilisation (calcul numérique, maths). Si vous connaissez de bons tutos/bouquins smiley29

TranspirationGO
Dimension post post cyberpunk
814 posts
depuis le 1/04/2016
TrinitronGO

j'ai un peu de mal à gérer les dialogues dans unity. j'aimerais bien un système avec des illustrations / effets différents à certains moments, un peu comme ça, en gros

M8lrrB.gif

par dessus il y a des collectibles et des choix à certains moments. c'est pas tant les éléments dissociés qui me posent problème, ma solution actuelle fonctionne mais c'est une usine à gaz et c'est extrêmement chronophage pour intégrer des trucs.

je cherche surtout à avoir un outil plus souple qui me permettent de travailler plus vite et ainsi créer une oeuvre digne du test de heavy rain.

j'ai vu qu'il y avait des plugin dialogue system / visual novel, est ce que ce serait une bonne solution ? j'aimerais bien réussi à coder un truc avec mes doigts mais je trouve pas trop de tuto utile sur le sujet.

Fier comme un beauf.
5 516 posts
depuis le 29/11/2007
Marks
L'homme sait faire du pain grâce à Dieu
Au pays des merguez
11 392 posts
depuis le 15/07/2008
hichanbis

Cinemachine miracle

L'homme sait faire du pain grâce à Dieu
Au pays des merguez
11 392 posts
depuis le 15/07/2008
hichanbis

Hello les amis, j'ai un souci avec le combo Scriptable Object et serialization (save/load) JSON.

En gros j'ai un SO (Scriptable object) de runtime représentant mon GameProgress qui contient des références vers des instances d'objets divers et variés (classes C# simples et serializables pour la position du joueur, le nom de la scène, ses stats etc).
Je le serialise en JSON (save dans le dossier de sauvegarde Application.persistentDataPath), je ferme Unity puis rouvre, je déserialise (Load le fichier et j'overwrite mon SO GameProgress) => Tout baigne je retrouve bien ma progression.

Maintenant j'ai mis en place un SO AllConditions qui contient une liste de SO Condition qui a un booléen satisfied, ce qui me permet de dire si le joueur a satisfait une condition ou non (je change le bool au runtime quoi).

Le problème:
J'essaye maintenant d'ajouter AllConditions à mon SO GameProgress (dans l'espoir de pouvoir sauvegarder les conditions satisfaites ou non).
Ca marche bien si je reste dans Unity, en gros si je serialise, déserialise on est bon.
Par contre si je serialise, ferme Unity puis le rouvre, et déserialise mon json => toutes mes réferences sont missing.

Et c'est normal, JsonUtility.ToJson serialise une liste de réference vers les SO Condition et ces réferences sont les instances IDs éphèmères qui sont re-générés à chaque session (éditeur ou runtime). Donc en gros I'm fucked.

C'est quoi la solution pour serialiser une référence pérenne vers un SO ?
J'ai cru comprendre que le GUID était une solution mais aucune idée de comment m'en servir au moment du Save ou Load...

Edit par hichanbis (28/12/2017 17h03)

Toi aussi deviens indéveloppeur [Unity/UE4 pour platformers 2D osef]
Remonter

Pied de page des forums

ContactMentions légales