Bonjour,
Je souhaite faire pivoter un hexagone régulier autour d'une de ses 6 arêtes(pas toujours la même).
Etant donné que l'objet parent (l'hexagone) est constitué de 6 objets enfants (triangles équilatéraux) ayant les bons axes de pivot, je pensais me servir des objets enfants pour faire pivoter l'hexagone autour de ses arêtes.
Mais je ne trouve pas comment procéder.
J'ai vu sur ce forum que pour effectuer la rotation d'un objet autour d'un axe différent de x, y ou z il fallait encapsuler l'objet dans un GameObject vide ce qui permettait de définir le pivot souhaité sur l'objet vide. Il s'agit donc de la rotation d'un objet enfant (et son parent) autour d'un pivot de l'objet parent.
Je ne pense pas pouvoir utiliser cette méthode car dans mon cas le pivot change selon le contexte.
Pourriez-vous m'aider ?
Merci bien pour votre attention.
[DB-AL] [RESOLU]Rotation d'un objet parent autour du pivot d'un objet enfant
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :
Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé
Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie
Exemple :
[DB-RS] Mouvement perso multijoueur
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :
Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé
Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie
Exemple :
[DB-RS] Mouvement perso multijoueur
[DB-AL] [RESOLU]Rotation d'un objet parent autour du pivot d'un objet enfant
Dernière édition par Danytro le 15 Août 2018 12:31, édité 2 fois.
Re: [DB-AL] Rotation d'un objet parent autour du pivot d'un objet enfant
Bonjour,
La nuit portant conseil, je pense avoir trouvé la solution:
Je créé un GameObject vide parent de l'hexagone et de 6 autres GameObjects vides, chacun ayant comme axe de rotation une des arêtes de l'hexagone.
Lorsque je veux faire pivoter l'hexagone:
1) Je change la hiérarchie de l'hexagone en le passant enfant d'un des 6 autres GameObjects vides selon le pivot que je souhaite utiliser.
2) Je pivote le GameObject vide et son enfant (l’hexagone).
3) Je reviens à la hiérarchie initiale.
Voilà la théorie, j'attends votre avis ou bien la mise en pratique pour passer ce sujet résolu.
La nuit portant conseil, je pense avoir trouvé la solution:
Je créé un GameObject vide parent de l'hexagone et de 6 autres GameObjects vides, chacun ayant comme axe de rotation une des arêtes de l'hexagone.
Lorsque je veux faire pivoter l'hexagone:
1) Je change la hiérarchie de l'hexagone en le passant enfant d'un des 6 autres GameObjects vides selon le pivot que je souhaite utiliser.
2) Je pivote le GameObject vide et son enfant (l’hexagone).
3) Je reviens à la hiérarchie initiale.
Voilà la théorie, j'attends votre avis ou bien la mise en pratique pour passer ce sujet résolu.
Re: [DB-AL] Rotation d'un objet parent autour du pivot d'un objet enfant
Sans utiliser de GameObject supplémentaire ou de bidouillages de ta hiérarchie, tu peux essayer avec la méthode RotateAround
https://docs.unity3d.com/ScriptReferenc ... round.html
https://docs.unity3d.com/ScriptReferenc ... round.html
Re: [DB-AL] Rotation d'un objet parent autour du pivot d'un objet enfant
Voilà comment je fais pour faire pivoter le jeton de forme hexagonale autour d'une de ces arêtes :
- Je créé une animation de pivotement pour chaque arête du jeton
- Je créé un évènement à la fin de l'animation du jeton
- Je rattache à cet évènement la fonction FinduPivotement() de la classe Jeton ci-dessous
- Je créé une animation de pivotement pour chaque arête du jeton
- Je créé un évènement à la fin de l'animation du jeton
- Je rattache à cet évènement la fonction FinduPivotement() de la classe Jeton ci-dessous
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Jeton : MonoBehaviour {
// Use this for initialization
void Start ()
{
/* choix du pivot du Jeton
* PivotBas = 2
* PivotBasDroite = 3
* PivotBasGauche = 4
* PivotHaut = 5
* PivotHautDroite = 6
* PivotHautGauche = 7
*/
int pivot = 2; //choix d'une des arêtes comme pivot du jeton
GameObject duplicate = Instantiate(transform.GetChild(pivot).gameObject, GameObject.Find("0_0").transform);
transform.SetParent(duplicate.transform);
duplicate.SetActive(true);
}
// Utilisé comme évènement d'animation à la fin du pivotement du jeton
void FinduPivotement()
{
Transform pivot = transform.parent;
transform.SetParent(GameObject.Find("0_0").transform);
Destroy(pivot.gameObject);
}
}