Demande rapide sur Raycast

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

Demande rapide sur Raycast

Message par freepl » 09 Oct 2014 19:37

Bonjour

J'ai cherché sur la doc principale d'Unity , les directions du raycasthit.
Je tournais en rond.

Pourriez-vous me confirmer si j'ai bon

avant FORWARD
arrière BACK
haut UP
bas DOWN
gauche LEFT
driote RIGHT

Meric

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

Re: Demande rapide sur Raycast

Message par boubouk50 » 10 Oct 2014 09:56

Tu as les infos ici:
Vector3 sur Unity
"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
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

Re: Demande rapide sur Raycast

Message par freepl » 10 Oct 2014 10:04

Merci

J'avais beau chercher avec différentes forme de recherche je tombais toujours sur le raycast de caméra

Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

Re: Demande rapide sur Raycast

Message par freepl » 10 Oct 2014 11:44

Rebonjour

Voici un bout de mon code.
J'ai bien mis back pour l'arrière mais Unity me dit que ce n'est pas bon !?

Assets/3D/Vehicules 3D/AFFICEHR_MASQUER_Mesh.js(58,52): BCE0019: 'back' is not a member of 'UnityEngine.Transform'.

Code : Tout sélectionner

var DetectionAvant20m : RaycastHit;                                     //crée le rayon "DetectionAvant20m" et sa fonction de heurt "RaycastHit"
if (Physics.Raycast (transform.position, transform.back, DetectionAvant20m, 20 ))    
// DetectionAvant20m est égal à 20m fdevant le vl
   {
if(DetectionAvant20m.collider.gameObject.tag=="RETROVISEUR" )
              {
    renderer.enabled = true; 
              }

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

Re: Demande rapide sur Raycast

Message par boubouk50 » 10 Oct 2014 12:36

Oui Back n'est pas un vecteur de transform
Je pense que tu voudrais utiliser plutôt

Code : Tout sélectionner

-transform.forward
à la place de

Code : Tout sélectionner

transform.back
transform.forward est le vecteur +Z de ton gameObjet
vector3.forward est le vecteur unitaire [0,0,1]
ce n'est pas la même chose.
"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
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

Re: Demande rapide sur Raycast

Message par freepl » 10 Oct 2014 14:17

Merci

Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

Re: Demande rapide sur Raycast

Message par freepl » 10 Oct 2014 15:32

Là je bloque complètement

1 Le code semble (?) bon car pas d'erreur d'Unity

2 Le bus a une box collider
Image

3 Le retroviseur en a aussi une et est bien taggué en RETROVISEUR
Image
Image

Où mon erreur ?

Merci

Code : Tout sélectionner

#pragma strict

/* 
A METTRE SUR LES VEHICULES





DEVANT / DERRIERE
Tagguer la caméra, ou bien le rétrovieur, en RETROVISEUR
 
*/


private var Retroviseur_Maya : GameObject;// Tag en RETROVISEUR


function Update () 
{

			  
			  
			  
/* pour les objets par devant et derrière

la caméra avance et le rayon qui est derriere le véhicule ( DetectionArriere20m) détecte l'objet et donc le renderer devient false 
la caméra passe et le rayon qui est devant le véhicule ( DetectionAvant20m) détecte l'objet et donc le renderer devient true
*/



var DetectionAvant10m : RaycastHit;                                     //crée le rayon "DetectionAvant10m" et sa fonction de heurt "RaycastHit"
if (Physics.Raycast (transform.position, -transform.forward, DetectionAvant10m, 10))    
// DetectionAvant10m est égal à 10m devant le vl, -forward pour inverser le sens
   {
if(DetectionAvant10m.collider.gameObject.tag=="RETROVISEUR" )
              {
    renderer.enabled = true; 
              }
              
  }
			  
			  
var DetectionArriere30m : RaycastHit;                                     //crée le rayon "DetectionArriere30m" et sa fonction de heurt "RaycastHit"
if (Physics.Raycast (transform.position, transform.forward, DetectionArriere30m, 30 ))    
// DetectionArriere30m est égal à 30 m derriere le VL masque le renderer quand il touche l'objet taggué en RETROVISEUR
   {
if(DetectionArriere30m.collider.gameObject.tag=="RETROVISEUR" )
              {
    renderer.enabled = false; 
              }
			  
    }
}


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

Re: Demande rapide sur Raycast

Message par boubouk50 » 10 Oct 2014 15:42

C'est quoi la question? C'est quoi qui va pas?
"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
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

Re: Demande rapide sur Raycast

Message par freepl » 10 Oct 2014 15:54

ah , oui :oops:

Le bus ne disparait pas , il est toujour visible
sur l'image on voit la box collider du retroviseur qui traverse le bus alors que celui -c-i ne devrait plus être visible
Image

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

Re: Demande rapide sur Raycast

Message par boubouk50 » 10 Oct 2014 16:16

Essaie voir cela, remplace:

Code : Tout sélectionner

if(DetectionArriere30m.collider.gameObject.tag=="RETROVISEUR" )  
par

Code : Tout sélectionner

if(DetectionArriere30m.collider.tag=="RETROVISEUR" )
pareil pour l'autre condition:

Code : Tout sélectionner

if(DetectionAvant10m.collider.gameObject.tag=="RETROVISEUR" )
-EDIT- le tag peut être lu directement sur le collider, mais il doit aussi l'être depuis le gameObject donc je ne pense pas que ce soit cela en fait
Je pencherai plutôt sur le fait que le raycast ne doit pas se faire sur transform.forward. Sur l'image l'axe du Bus est le rouge, X. Ce serait donc le transform.right pour l'arrière et le -transform.right pour le devant
"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 »