[Resolu][DB-AL] tourner un objet en fonction d'un autre

Pour les scripts écrits en C#
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
dremy38
Messages : 7
Inscription : 07 Jan 2017 21:55

[Resolu][DB-AL] tourner un objet en fonction d'un autre

Message par dremy38 » 07 Jan 2017 22:03

Bonsoir,

J'explique mon problème. J'ai deux objets (un cube et une sphère). Ma sphère doit tourner en rond par rapport à mon cube. Je dois alors récupéré la distance entre ces deux objets ainsi que l'angle. J'obtient ce code-ci :

Code : Tout sélectionner

using System;
using UnityEngine;
using System.Collections;

public class PiegeFeu : MonoBehaviour {

	// Use this for initialization
    private RaycastHit hit;
    private float distance;
    private float angle;
    public Transform Sphere;
	void Start () {
        Vector3 up = transform.TransformDirection(Vector3.up);
        if (Physics.Raycast(transform.position, up, out hit))
        {
            if (hit.collider.name == "Sphere")
            {
                distance = hit.distance;
 
            }

        }
        angle = AngleBetweenVector2(transform.position, Sphere.position);
    }

	
	// Update is called once per frame
	void Update ()
	{
	    Debug.Log(angle);
	    angle += 0.1f;
	    
	}

    private float AngleBetweenVector2(Vector3 vec1, Vector3 vec2)
    {
        Vector3 diference = vec2 - vec1;
        float sign = (vec2.y < vec1.y) ? -1.0f : 1.0f;
        return Vector2.Angle(Vector2.right, diference) * sign;
    }
}
Je récupère bien mon angle et ma distance mais je ne vois pas comment faire pour le faire bouger en rond. Comment peut-on faire cela?

Merci
Dernière édition par dremy38 le 08 Jan 2017 17:00, édité 1 fois.

Override
Messages : 143
Inscription : 04 Nov 2016 20:08

Re: [DB-AL] tourner un objet en fonction d'un autre

Message par Override » 08 Jan 2017 10:13

Alors déjà pour t'aider, au niveau de la distance tu peut faire Vector3.Distance (pos1, pos2) ce qui va t'éviter ce calcul avec le raycast :/

Mais sinon pour faire tourner un objet autour d'un autre, je suis pas un pro, mais je pense que si tu lui applique une translation sur le vecteur forward et qu'en même temps sur l'axe y, l'axe ou tu veut qu'il tourne, tu lui applique une rotation, l'objet tournera en rond, il te suffira ensuite de le parenté à l'objet dont tu veut qu'il tourne autour.

Bon dsl pour ces explications un peut bancales, mais je ne savais pas trop comment formuler ça :hehe:
:merci:

Moi 1971
Messages : 727
Inscription : 29 Sep 2015 13:38

Re: [DB-AL] tourner un objet en fonction d'un autre

Message par Moi 1971 » 08 Jan 2017 12:01

Bonjour,
ou alors il suffit d'utiliser la fonction RotateAround.
La doc : https://docs.unity3d.com/ScriptReferenc ... round.html

dremy38
Messages : 7
Inscription : 07 Jan 2017 21:55

Re: [DB-AL] tourner un objet en fonction d'un autre

Message par dremy38 » 08 Jan 2017 13:31

Override a écrit :Alors déjà pour t'aider, au niveau de la distance tu peut faire Vector3.Distance (pos1, pos2) ce qui va t'éviter ce calcul avec le raycast :/

Mais sinon pour faire tourner un objet autour d'un autre, je suis pas un pro, mais je pense que si tu lui applique une translation sur le vecteur forward et qu'en même temps sur l'axe y, l'axe ou tu veut qu'il tourne, tu lui applique une rotation, l'objet tournera en rond, il te suffira ensuite de le parenté à l'objet dont tu veut qu'il tourne autour.

Bon dsl pour ces explications un peut bancales, mais je ne savais pas trop comment formuler ça :hehe:
T'inquiète pas, j'ai compris ce que tu voulais dire :). Merci de ta réponse je testerai cela cette après-midi.
Moi 1971 a écrit :Bonjour,
ou alors il suffit d'utiliser la fonction RotateAround.
La doc : https://docs.unity3d.com/ScriptReferenc ... round.html
Merci, je vais regarder cela.

Je mettrai le code quand cela fonctionnera si jamais cela intéresse du monde

dremy38
Messages : 7
Inscription : 07 Jan 2017 21:55

Re: [DB-AL] tourner un objet en fonction d'un autre

Message par dremy38 » 08 Jan 2017 16:59

Code : Tout sélectionner

using System;
using UnityEngine;
using System.Collections;

public class PiegeFeu : MonoBehaviour {

	// Use this for initialization
    public GameObject cube;
    public float speed;
	
	void Start () {
		
		
	}

	
	// Update is called once per frame
	void Update ()
	{
	    OrbitAround();
	}

    private void OrbitAround()
    {
        transform.RotateAround(cube.transform.position,Vector3.forward,speed*Time.deltaTime);
    }
}

Comme promis, j'ai mis le code fonctionnel :)
Merci

Moi 1971
Messages : 727
Inscription : 29 Sep 2015 13:38

Re: [Resolu][DB-AL] tourner un objet en fonction d'un autre

Message par Moi 1971 » 08 Jan 2017 18:34

Si le problème est résolu, peux-tu éditer ton premier poste et modifier son titre pour y rajouter le tag [RESOLU]?

;-)

Répondre

Revenir vers « (C#) CSharp »