points de contacts entre collision et différents plans

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
Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6227
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: points de contacts entre collision et différents plans

Message par boubouk50 » 17 Avr 2024 08:48

Aucune des fonctions de cet asset ne donne le point d'intersection que tu recherches.
Comme dit, l'intersection de 2 plans ne donne pas un point, mais une ligne soit une infinité de points. Tu ne trouveras probablement pas une fonction toute faite.
"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

Avatar de l’utilisateur
Kaloverian
Messages : 345
Inscription : 10 Août 2016 03:03

Re: points de contacts entre collision et différents plans

Message par Kaloverian » 19 Avr 2024 01:50

solution trouvée qui n'utilise pas les points de contact ni le RayCasting:

Code : Tout sélectionner

using UnityEngine;

public class intersect_of_plans : MonoBehaviour
{
    public GameObject base_plan, plane1, plane2, intersectionPointPrefab, intersectionPointPrefab2;
    public KeyCode imprim;
   


    void Update()
    {
        // Récupérer les normales des plans
        Vector3 normal_base=base_plan.transform.up.normalized;
        Vector3 normal1 = plane1.transform.up.normalized;
        Vector3 normal2 = plane2.transform.up.normalized;

        // Calculer la direction de la droite d'intersection de base_plan et plane1
        Vector3 Direction1 = Vector3.Cross(normal_base, normal1).normalized;
        // Calculer la direction de la droite d'intersection de base_plan et plane2
        Vector3 Direction2 = Vector3.Cross(normal_base, normal2).normalized;

        Vector3 projectedPoint1 = Vector3.ProjectOnPlane(plane1.transform.position, Direction1);
        intersectionPointPrefab.transform.position = projectedPoint1;

        Vector3 projectedPoint2 = Vector3.ProjectOnPlane(plane2.transform.position, Direction2);
        intersectionPointPrefab2.transform.position = projectedPoint2;

    
   
        if (Input.GetKeyDown(imprim))
        {
            print("point projeté 1" + projectedPoint1);
            print("point projeté 2" + projectedPoint2);
        }
    }
}


Répondre

Revenir vers « (C#) CSharp »