Layer de collisions

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
BLooDBuRNiNG
Messages : 61
Inscription : 07 Juin 2013 15:55

Layer de collisions

Message par BLooDBuRNiNG » 05 Avr 2015 12:34

Bonjour je rencontre actuellement un problème avec les layers de collisions,

J'aimerai lancer un rayon qui détecte simplement 2 layers s'appelant "NPC" et "Job Resource" sauf que sans que je puisse savoir pourquoi dans le code qui suit le layer nommé "New Area" est aussi testé par conséquent mes calculs sont faussés.

Voici mes layers de collisions :
Image

Voici la partie essentiel de mon code.

Code : Tout sélectionner

Vector2 mousePosition = Input.mousePosition;
Ray ray = base.Player.Objects.Cameras.Current.ScreenPointToRay(mousePosition);
		
int layerToCollide = LayerMask.GetMask("NPC", "Job Resource");
Debug.Log(layerToCollide); //me renvoit bien les bonnes valeurs (3 072)

if (Physics.Raycast(ray, out this.rayCastHit, layerToCollide))
{
	Debug.Log(rayCastHit.collider.gameObject.layer); //me renvoi 9 aui est le layer New Area (ce n'est pas normal)
}
Auriez-vous une solution à mon problème? Si nécessaire je peux fournir plus d'informations ou faire un chat vocal en montrant mon écran.

Merci bien
Un passionné dans la foule.

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: Layer de collisions

Message par cayou66 » 06 Avr 2015 07:28

Salut,
tiens je ne connaissais pas LayerMask.GetMask, merci ! :) Comme quoi on en apprend tous les jours.
Alors je vois pas de soucis ici mais tu peux essayer une autre approche (que j'utilise et qui marche). Essayes de créer un public LayerMask et de le remplir dans l'éditeur avec les layers que tu souhaites pour ensuite l'utiliser dans ton raycast.
Si ça ne marche pas, ton souci n'est pas dans le code...

Répondre

Revenir vers « (C#) CSharp »