Grille magnétique

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
franceschi julien
Messages : 27
Inscription : 14 Fév 2022 18:44

Grille magnétique

Message par franceschi julien » 20 Fév 2023 18:59

Salut à tous,

J'aimerais déplacer un cube dans une grille magnétique de dimensions 6x6 constituée de petite plans de 0.16f de largeur.

Pour cela j'utilise le code suivant:
    void Update()
    {
        var position = new Vector3(
             Mathf.Round(Cube.transform.position.x / 1.6f) * 1.6f,
             Mathf.Round(Cube.transform.position.y / 1.6f) * 1.6f,
             Mathf.Round(Cube.transform.position.z / 1.6f) * 1.6f);
        Cube.transform.position = position;

    }
Le problème c'est que le rectangle se magnétise mal, en effet il se centre dans la grille horizontalement en laissant un écart de 0.8f (la moitié de 1.6f à gauche et à droite, voir image ci-dessous).
La moitié de 1.6f divisée par 2 des deux cotés (0.8f).

Image

Pour cela je crée une grille magnétique de 0.8f (voir code ci-dessous).
Et là ca marche.
    void Update()
    {
        var position = new Vector3(
             Mathf.Round(Cube.transform.position.x / 0.8f) * 0.8f,
             Mathf.Round(Cube.transform.position.y / 0.8f) * 0.8f,
             Mathf.Round(Cube.transform.position.z / 0.8f) * 0.8f);
        Cube.transform.position = position;
     }
Moi, ce que je cherche, c'est de faire une magnétisation avec un écart de 1.6f sans problème de centrage (comme si la magnétisation était de 0.8f).

Merci pour votre aide.

A+

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

Re: Grille magnétique

Message par boubouk50 » 20 Fév 2023 19:47

Ce n'est qu'une question d'origine.
Ici, tu considères que l'origine est 0,0,0 or si tu places ton objet en 0,0,0, il sera centré sur ce point, et toi tu veux qu'il soit décalé. Il faut donc désaxer ton origine et cela se fait avec une simple addition.
Sinon, tu fais l'inverse en décalant le pivot de ton cube. Pour cela, tu le mets enfant d'un gameObject et tu le décales. Ce sera le gameObject parent qui viendra se magnétiser
"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 »