Afficher distance parcouru par un personnage

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
naathan76
Messages : 9
Inscription : 01 Nov 2016 19:12

Afficher distance parcouru par un personnage

Message par naathan76 » 01 Nov 2016 19:26

Salut tout le monde : :hello:

J'apprend depuis quelques temps à utiliser unity en suivant des tutos par ci par là.
dernièrement je me suis mis en tête de développer un petit jeu pour un ami.

J'utilise ceci comme base de mon jeux : https://www.assetstore.unity3d.com/en/#!/content/12324

j'ai déjà modifier pas mal de choses pour arriver au résultat espérer, seulement voilà je suis une bonne grosse merde en programmation :pleur4:

-Je souhaite faire apparaître sur l'écran (en direct pendant le jeu) la distance parcouru par mon personnage
- et ensuite lorsque mon personnage touche un objet (qui le fera perdre) j'aimerai que la partie s'arrête, qu'un écran apparaisse avec une photo, le score ainsi qu'un bouton recommencer et quitter.

Quelqu'un aurait quelques indications, conseils ou me pourrait me montrer la démarche à suivre pour réaliser ces choses ?

Merci :-D

Avatar de l’utilisateur
F@B
Messages : 1844
Inscription : 01 Août 2013 10:41
Contact :

Re: Afficher distance parcouru par un personnage

Message par F@B » 01 Nov 2016 22:05

naathan76 a écrit : -Je souhaite faire apparaître sur l'écran (en direct pendant le jeu) la distance parcouru par mon personnage
- et ensuite lorsque mon personnage touche un objet (qui le fera perdre) j'aimerai que la partie s'arrête, qu'un écran apparaisse avec une photo, le score ainsi qu'un bouton recommencer et quitter.

Quelqu'un aurait quelques indications, conseils ou me pourrait me montrer la démarche à suivre pour réaliser ces choses ?
Salut

Vector3.Distance( ) devrais t'aider pour ta question 1

C'est quoi la question 2 ? t'as essayé quoi ? tu sais pas par ou commencer ? alors apprends la programmation ;) tu n'arriveras a rien sans te coller aux bases. Pas de secret sinon on vas pas faire ton jeu a ta place ;) ;) ;) :nonon: :ange:

bouffles les bases de l'algo et le C# :
https://openclassrooms.com/courses/appr ... opper-en-c

ensuite les tutos unity :
https://unity3d.com/learn/tutorials/topics/scripting
https://unity3d.com/learn/tutorials

puis la doc est ton nouveau meilleur pote avec google.
ʕ·͡ᴥ·ʔ ==> Mon Portfolio <== ʕ·͡ᴥ·ʔ

Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !

naathan76
Messages : 9
Inscription : 01 Nov 2016 19:12

Re: Afficher distance parcouru par un personnage

Message par naathan76 » 02 Nov 2016 16:13

Salut merci pour ta réponse, j'ai pu déjà résoudre pas mal de mes problèmes.

J'ai juste encore un petit soucis, lorsque mon personnage touche un ennemie je voudrai remplacer celui ci par un préfab.

J'ai donc fait ça :

Code : Tout sélectionner

 using UnityEngine;
using System.Collections;

public class Bonjour : MonoBehaviour {

    public AudioClip son;
    public GameObject particule;

    void OnTriggerEnter(Collider obj)
    {
        if (obj.gameObject.name == "Koala")
        {

            GetComponent<AudioSource>().PlayOneShot(son);
            Instantiate(particule, obj.transform.position , Quaternion.identity);
        }

    } 


ça marche comme je le souhaite, maintenant j'aimerai juste changer sa position en Z pour que le préfab qui pop apparaisse devant la zone de jeu.

j’espère que c'est assez clair :pasdrole: je ne suis pas sur de bien m'exprimer ^^

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6214
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Afficher distance parcouru par un personnage

Message par boubouk50 » 02 Nov 2016 16:52

As-tu lu la doc sur Instantiate ()?
C'est pourtant très explicite:

public static Object Instantiate(Object original, Vector3 position, Quaternion rotation);

Au lieu de donner la position exacte, il te 'suffit de' donner la position décalée en z.
Transform.forward
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

naathan76
Messages : 9
Inscription : 01 Nov 2016 19:12

Re: Afficher distance parcouru par un personnage

Message par naathan76 » 02 Nov 2016 17:52

Yep j'ai réussi à plus ou moins à bidouiller le truc avec tes indications mais je me rend compte que ce n'était pas le rendu espéré.

En fait je voudrai que quand mon perso touche l’ennemie, une image (ou un préfab, je ne sais ce qui est le mieux) s'affiche au centre de la caméra (Pour dire qu'il a perdu en gros) sans pour au tant que ça remplace le perso ou l'ennemie.

Désolé si mes questions peuvent paraitre peu pertinente et un peu conne, je suis encore débutant et encore beaucoup plus avec la programmation :roll:
Désolé aussi pour toutes les fautes d'orthographes potentiel X|

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6214
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Afficher distance parcouru par un personnage

Message par boubouk50 » 02 Nov 2016 18:09

Entre
naathan76 a écrit :ça marche comme je le souhaite, maintenant j'aimerai juste changer sa position en Z pour que le préfab qui pop apparaisse devant la zone de jeu.
et
naathan76 a écrit :En fait je voudrai que quand mon perso touche l’ennemie, une image (ou un préfab, je ne sais ce qui est le mieux) s'affiche au centre de la caméra (Pour dire qu'il a perdu en gros) sans pour au tant que ça remplace le perso ou l'ennemie.
Il y a quand même un énorme fossé...
Il faut que tu affiches un élément d'UI. Tout simplement, tu prépares à l'avance l'image (GameObject Image) que tu souhaites montrer dans un Canvas (GameObject Canvas) et tu la masques. Ensuite, quand tu touches un ennemi, tu l'affiches.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

naathan76
Messages : 9
Inscription : 01 Nov 2016 19:12

Re: Afficher distance parcouru par un personnage

Message par naathan76 » 03 Nov 2016 21:59

Comment je fais pour que de base il sois masquer dans la scène ?
Et je met le script qui sert à faire apparaître le canvas sur mon canvas ou sur mon personnage ?
désolé ^^

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6214
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Afficher distance parcouru par un personnage

Message par boubouk50 » 04 Nov 2016 10:08

naathan76 a écrit :Comment je fais pour que de base il sois masquer dans la scène ?
Si tu en es là, je te conseille vivement de faire un apprentissage d'Unity un peu plus poussé, parce qu'afficher/masquer un gameObject, ça fait partie des premiers trucs à apprendre...
Regarde les Unitys Learn, des tutos simple sur les premiers pas dans Unity, etc.

Sinon, dans l'Inspector, tu as un bouton radio en haut à gauche pour activer/désactiver un GameObject.
Ton script doit être sur un autre objet que celui à masquer (généralement celui qui va envoyer l'info).
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

naathan76
Messages : 9
Inscription : 01 Nov 2016 19:12

Re: Afficher distance parcouru par un personnage

Message par naathan76 » 04 Nov 2016 13:30

Je sais que ce genre de chose est normalement super simple, c'est bien ce qu'il me pose problème, ça fait jour que je regarde tutos sur tutos et que je lis un tas de chose, mais j'arrive pas à mettre le doigt dessus. Le pire c'est qu'il ne me reste plus que ça a faire et j'aurai finis mon jeu. Je sais que je dois m'y prendre assez mal, et que j'arrive pas à saisir la bonne logique.

J'ai bien masquer le canvas dans l'inspector en haut à gauche, ensuite j'ai mis mon script qui est censé faire apparaître mon canvas sur l'objet qui entre en collision :

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

public class Bonjour : MonoBehaviour {

    public AudioClip son;
    public GameObject CanvasObject;




    void OnTriggerEnter(Collider obj)
    {
        if (obj.gameObject.name == "Koala")
        {

            GetComponent<AudioSource>().PlayOneShot(son);
            gameObject.GetComponent<Renderer>().enabled = true;
        }

    }

  

    }

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6214
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Afficher distance parcouru par un personnage

Message par boubouk50 » 04 Nov 2016 13:52

naathan76 a écrit :Le pire c'est qu'il ne me reste plus que ça a faire et j'aurai finis mon jeu. Je sais que je dois m'y prendre assez mal, et que j'arrive pas à saisir la bonne logique.
C'est bien ce que je te reproche un peu, tu as l'air de n'avoir suivi que des tutos qui te permettent de faire un jeu, mais pas sur l'utilisation du logiciel. Il en résulte que tu es totalement perdu dès que ça sort du cadre de tes tutos. Un peu comme apprendre à compter à partir de 37. Sûr, tu pourras compter des palettes de 84 pots de yahourts chacun mais tu ne sauras pas compter, tu n'auras pas la logique du nombre.
Je te dis ça dans ton intérêt.

Concernant ton code, je sais pas où tu as repompé ça, mais c'est presque n'importe quoi. Comme quoi, ce que je te disais plus haut, la logique derrière est encore loin. C'est dommage, ça te permettrait de vraiment faire des jeux. Les explications sont dans le code:

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

public class Bonjour : MonoBehaviour {

    public AudioClip son;
    //Ici tu récupères le canvas, très bien
    public GameObject CanvasObject;

    void OnTriggerEnter(Collider obj)
    {
        if (obj.gameObject.name == "Koala")
        {
            GetComponent<AudioSource>().PlayOneShot(son);
            //Ici, tu actives le renderer de gameObject, qui n'est autre que this.gameObject donc l'objet qui possède le script
            //FAUX gameObject.GetComponent<Renderer>().enabled = true;
            //Alors qu'il faut que actives le canvasObject, donc le gameObject pas son Renderer (même si c'est une possibilité valide)
            canvasObject.SetActive (true);
        }
    }
}
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Répondre

Revenir vers « Scripting »