zoom sur un pentaminoL en boucle

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
juliuson
Messages : 110
Inscription : 03 Mai 2017 18:00

Re: zoom sur un pentaminoL en boucle

Message par juliuson » 10 Jan 2025 16:58

Le RayCast rentre en contact avec un cube (il le supprime avec le code suivant:

Code : Tout sélectionner

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray, out RaycastHit hit))
            {
                pent.transform.position = hit.point; // Mettre à jour la position du cube
                if (hit.transform.gameObject.name == "cubeU")
                {
                    if (cube != null)
                    {
                        cube.SetActive(false); // Désactiver le cube cible
                    }
                }
            }
.

Le jeu comporte un sprite de fond (image verte) et une grille composée de plusieurs petits plans bleus alignés (plus le contour blanc de la grille).

Pouvez vous m'aider, du code serait le bienvenue, je ne comprends pas bien comment utiliser les Layers et Layermasks,

Je ne comprens pas la phrase suivante :
À la frame suivante, ça recommence
Qu'entendez vous par "A la frame suivante"
En fait j'aimerais supprimer l'effet de zoom.

Merci pour votre aide,

A+

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

Re: zoom sur un pentaminoL en boucle

Message par boubouk50 » 14 Jan 2025 15:44

juliuson a écrit :
10 Jan 2025 16:58
Je ne comprens pas la phrase suivante :
À la frame suivante, ça recommence
Qu'entendez vous par "A la frame suivante"
C'est quand même le fondement même du temps réel : Calculer image par image.
Ton code, dans l'Update () (entre autres) est exécuté à chaque nouvelle image (frame). Il donne un résultat différent en fonction de ce que tu as programmé.
Ici, tu as programmé un positionnement sur un point d'impact. Ton point d'impact change à chaque frame, à chaque Update donc, donc ta position change à chaque frame. Donc ton pentaminoL se déplace à chaque frame.
Or le point d'impact est SUR le pentaminoL, donc ton pentaminoL remonte à chaque frame.

Je ne peux pas t'expliquer mieux que ça, ni t'aider plus pour l'instant.
Tant que tu ne comprendras pas réellement ce que tu fais ou ce qui se passe, tu n'avanceras pas.

Je t'ai déjà tout expliqué ce qui se passe, et comment le corriger. Ne t'attends pas à ce que je fasse le code pour toi. Je corrigerai ton code, et t'expliquerai pourquoi par contre. Mon but est que tu gagnes en compétence et en autonomie, pas que ton jeu se fasse plus vite.
"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

juliuson
Messages : 110
Inscription : 03 Mai 2017 18:00

Re: zoom sur un pentaminoL en boucle

Message par juliuson » 15 Jan 2025 13:56

Salut à tous,

J'ai mis le code Update() dans le code OnMouseDown.
Voici le code:

Code : Tout sélectionner

 private void OnMouseDown()
    {
        isDragging = true;
        cube.GetComponent<Renderer>().enabled = false;

        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        if (Physics.Raycast(ray, out RaycastHit hit))
        {
            pent.transform.position = hit.point; 
            if (hit.transform.gameObject.name == "cubeU")
            {
                if (cube != null)
                {
                    cube.SetActive(false); 
                }
            }
        }
    }
Cela évite l'effet de zoom.
Mais le pentamino ne se déplace pas lorsque l'on clique sur un cube (qui se supprime et qui affiche le pentamino L (cube.SetActive(false))).

Ma question est la suivante, comment déplacer le pentamino L lors du clic sur le cube?

Votre aide est la bienvenue,

A+

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

Re: zoom sur un pentaminoL en boucle

Message par boubouk50 » 15 Jan 2025 15:41

Le OnMouseDown (), comme son nom et la documentation l'indiquent clairement, est appelé quand on clique sur l'objet en question. C'est un événement, il est ponctuel. Il ne perdure pas. Il est appelé à chaque clic et ne s'exécute qu'une seule fois. Il est donc utile pour les choses à faire ponctuellement, une seule fois. ex : SÉLECTIONNER TON CUBE.
L'Update (), comme son nom et la documentation l'indiquent clairement, est appelé continuellement. Il s'exécute en boucle. Il est donc utile quand tu as besoin que quelque chose soit mis à jour continuellement. ex : DÉPLACER TON PENTAMINO.

C'était bon avant. Il te faut simplement ne pas prendre en compte le pentamino dans ton Raycast grâce au Layer, c'est tout. Je t'ai donné la solution plusieurs fois, expliqué le problème plusieurs fois, expliqué que ce n'était pas un zoom, mais un déplacement vertical.

Maintenant, tu as le choix. Soit, tu t'entêtes et je ne peux plus rien pour toi. Soit, tu fais un effort de compréhension, parce que je passe mon temps à te répéter la même chose. Ce qui, de mon point de vue, signifie 2 choses : tu t'en fous ou tu me trolles. Dans les 2 cas, je dis stop.
Ça fait 8 ans que tu es parmi nous, et ça fait tout autant de temps que je me répète pour rien.
Et je n'attends pas forcément de toi que tu réussisses du premier coup, simplement que tu ne poses pas encore une question totalement à côté de la plaque et sans prendre en compte mon aide.
"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 »