problème rotation avec FixedJoint pour une porte.

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
Xegniir
Messages : 20
Inscription : 26 Jan 2017 17:53

problème rotation avec FixedJoint pour une porte.

Message par Xegniir » 27 Mars 2017 16:26

Salut ! Comme dis dans le titre j'essaie de faire en sorte qu'une porte fasse une rotation lorsque un GameObjet comme un personnage la pousse, donc dans un sens elle s'ouvre (et reste ouverte) et dans l'autre elle se ferme et reste fermée. Le problème est que la porte se décale quand on la pousse, le mouvement de rotation est correcte mais je veux pas la translation, j'insère une image pour illustrer cela. Merci d'avance pour vos aides :)
Image
Image

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

Re: problème rotation avec FixedJoint pour une porte.

Message par boubouk50 » 27 Mars 2017 17:01

Je vois que ton cube est une primitive scalée.
Essaie d'appliquer le joint à un parent vide du cube dont le scale serait [1 1 1] et ne garder la porte juste pour le mesh.
"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

Xegniir
Messages : 20
Inscription : 26 Jan 2017 17:53

Re: problème rotation avec FixedJoint pour une porte.

Message par Xegniir » 29 Mars 2017 18:32

Yo ! Merci de ta réponse très rapide !
Demain après midi je retourne en projet donc ton aide est très précieuse :)
J'avoue ne pas connaître ou ne pas avoir le vocabulaire pour comprendre ce que tu me dis, j'ai pas très bien compris l'histoire de parent vide et scale ^^, pourrait tu préciser s'il te plaît ?

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

Re: problème rotation avec FixedJoint pour une porte.

Message par boubouk50 » 30 Mars 2017 09:07

Dans l'inspector, tu as le Component Transform de visible (le premier), il est composé des 3 transformations: position, rotation et échelle (scale). L'échelle te permet de modifier la taille de tes objets selon chaque axe. Il cause parfois des soucis s'il n'est pas uniforme, c'est à dire si toutes les valeurs ne sont pas les mêmes.
Je te conseille donc de créer un GameObject Empty sur lequel tu feras ton Joint, et mettre la porte (le modèle donc) enfant de ce GameObject. L'idée est d'avoir ce gameobject qui sert de Joint avec un scale à [1,1,1].
"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

Xegniir
Messages : 20
Inscription : 26 Jan 2017 17:53

Re: problème rotation avec FixedJoint pour une porte.

Message par Xegniir » 30 Mars 2017 14:43

Salut merci de ta réponse rapide comme toujours :)
Je comprends pas vraiment comment le scale du Joint de mon game object peut être à 1,1,1 car le cube créer pour faire le joint sortira du mur non ? Ou alors je ne comprends pas trop la démarche :-/
J'ai effacer le Joint qui étais enfant de la porte et j'ai créer un cube que j'ai appelé Fixedjoint et auquel j'ai ajouté un component "Fixed Joint" Je l'ai mis parent de la porte et lui ai donné un scale de 1,1,1. J'ai connecté le FixedJoint avec la porte et la porte avec le Joint. Quand je démarre le "jeu" la porte tombe d'elle même, je pense que j'ai fait n'importe quoi mais je comprends pas trop comment fonctionne ce component.. Je ne sais pas non plus si je dois activer ou désactiver le mesh renderer ou le box collider du fixedJoint '-'
Image
Image
Image

Ps: Je suis vraiment désolé de rien comprendre ^^

Xegniir
Messages : 20
Inscription : 26 Jan 2017 17:53

Re: problème rotation avec FixedJoint pour une porte.

Message par Xegniir » 30 Mars 2017 14:57

J'ai trouvé autant pour moi !!
Il me fallait juste coché les freeze position et rotation du rigidbody de mon FixedJoint ! Merci de ton aide ça marche parfaitement !
Maintenant j'ai un nouveau problème x)
Image
étant donné que je dois pousser la porte avec le corps d'un personnage, on ne peux pas fermer la porte derrière sois ^^
Faire une animation serais le mieux mais au final j'ai pas réussi '-'

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

Re: problème rotation avec FixedJoint pour une porte.

Message par boubouk50 » 30 Mars 2017 15:01

Au temps pour moi, moi-même je m'y perds un peu ^^, je ne suis pas concentré. Je pensais que le FixedJoint devait agir sur l'enfant et pas sur lui-même. C'est ce que j'essayais de te dire.

Reprenons depuis le début:
- déjà, regarde ça:https://unity3d.com/fr/learn/tutorials/ ... list=17120. Tu verras que pour les portes, le mieux est le HingeJoint et pas le FixedJoint.
- testes un peu (normalement, ce n'est pas trop dur à mettre en place), il y a des tutos sur le net aussi. (mots clé: HingeJoint Unity ->
http://www.3dbuzz.com/training/view/uni ... inge-joint)

-EDIT- trop tard...
Pour l'animation. Mon avis est qu'il va falloir scripter un peu pour animer entre la rotation actuelle et la rotation initiale. Par contre, je ne sais pas trop comment gérer cela si cela doit être fait avec la physique.
"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

Xegniir
Messages : 20
Inscription : 26 Jan 2017 17:53

Re: problème rotation avec FixedJoint pour une porte.

Message par Xegniir » 30 Mars 2017 15:23

Pas de soucis :D
La vidéo d'unity officel je l'ai déjà regardé mais j'ai pas su en tirer les avantages et les inconvénients pour mes portes ^^
Et oui je pense devoir scripter mais peut on faire une animation "full-scrip" ? '-'

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

Re: problème rotation avec FixedJoint pour une porte.

Message par boubouk50 » 30 Mars 2017 16:11

Oui, avec les fonctions OnCollisionEnter (), OnCollisionStay () et OnCollisionExit (), et OnTriggerEnter (), OnTriggerStay () et OnTriggerExit () de la classe Collider, tu as les événements liés au contact avec la porte. Disons, que dans tu touches la porte, elle s'ouvre automatiquement ou manuellement par un Input, par animation ou script.
Ensuite, tu peux définir une zone grâce à un trigger, et lorsque tu sors de cette zone, tu fermes la porte, par animation ou script.
"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

Xegniir
Messages : 20
Inscription : 26 Jan 2017 17:53

Re: problème rotation avec FixedJoint pour une porte.

Message par Xegniir » 31 Mars 2017 13:34

ça roule je vais me renseigner sur ce que tu me dis là. Merci de ton aide ! :)

Répondre

Revenir vers « Unity le logiciel »