Comment faire pour que la fonction OnTrigger marche sur un objet en particulier

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
Pixblazered
Messages : 12
Inscription : 24 Juin 2016 20:27

Comment faire pour que la fonction OnTrigger marche sur un objet en particulier

Message par Pixblazered » 26 Juin 2016 22:09

Bonjour,

j'aimerai que ma fonction OnTrigger2D ne s'applique que sur un gameObject,
tout simplement quelle soit éxécuter quand elle rencontre un gameObject en particulier mais pas avec d'autres gameObject (qui dans mon cas sont les platform)

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

public class monster : MonoBehaviour {

	public GameObject player;
	private Vector3 offset;

	// Use this for initialization
	void Start () {
		
		offset = transform.position - player.transform.position;

	}

	// Update is called once per frame
	void Update()
	{
		offset.y = -1.31f;
		transform.position = offset;

		transform.position = player.transform.position + offset;
	}

	// Use this for initialization
	void OnTriggerEnter2D(Collider2D other) {

		Application.LoadLevel("w1g2");
	}
}
voici mon code je ne sait pas quel ligne ajouté pour résoudre le problème citez ci-dessus.

Merci de votre aide !

Arkas
Messages : 21
Inscription : 03 Juin 2016 16:51

Re: Comment faire pour que la fonction OnTrigger marche sur un objet en particulier

Message par Arkas » 26 Juin 2016 22:16

Salut ! Pour ce faire, tu peux utiliser le tag ou le name de l'objet qui entre en collision :

Code : Tout sélectionner

void OnTriggerEnter2D( collider2D coll)
{
     if(coll.gameObject.tag == "letagdetonobjet") actions;
     else if(coll.gameObject.name == "lenomdetonobjet")  actions;
}
Ton meilleur ami, la doc ! :)http://docs.unity3d.com/ScriptReference ... xit2D.html

En espérant t'avoir aidé.

Pixblazered
Messages : 12
Inscription : 24 Juin 2016 20:27

Re: Comment faire pour que la fonction OnTrigger marche sur un objet en particulier

Message par Pixblazered » 27 Juin 2016 13:17

Bonjour,

Alors voilà j'ai essayer mais bon en gros je voudrait que la collision s'applique que ur mon player(qui a le tagg Player)

Code : Tout sélectionner

	void OnTriggerEnter2D(Collider2D other) {
		
		if(coll.gameObject.tag == "Player") Application.LoadLevel("w1g2");
		else if(coll.gameObject.name == "Player");

	}
Du cou si j'ai bien compris c'est bien ça qu'il faut mettre ?
Car quand il y a ça unity me dit "The name 'coll'does not exist in current context"

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

Re: Comment faire pour que la fonction OnTrigger marche sur un objet en particulier

Message par boubouk50 » 27 Juin 2016 13:20

Deux choses:
- Si tu n'as rien à faire dans l'autre cas, n'ajoute pas cette condition.
- Dans les scripts émis, les variables ont simplement pas la même dénomination, donc soit tu remplaces coll soit other.

Code : Tout sélectionner

void OnTriggerEnter2D(Collider2D other) {
	if(other.gameObject.tag == "Player")
		Application.LoadLevel("w1g2");
}
"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

Pixblazered
Messages : 12
Inscription : 24 Juin 2016 20:27

Re: Comment faire pour que la fonction OnTrigger marche sur un objet en particulier

Message par Pixblazered » 27 Juin 2016 14:26

Alors maintenant il n'y a plus d'erreur cependant j'ai un problème enfaite quand on fait ce genre de script c'est pour qu'il rentre en colision qu'avec le Player ou qu'il ne rentre pas en colision avec le Player.
Car là sur ce script :

Code : Tout sélectionner

	void OnTriggerEnter2D(Collider2D other) {
		
		if(other.gameObject.tag == "Player");
		Application.LoadLevel("w1g2");


	}
Il continue de me charger la scène w1g2 lorsqu'il touche une platform(qui son pas avec un trigger) par contre quand il y a colision avec la ball (qui n'est pas en trigger) il ne se passe rien. Je précise aussi que la collision avec la balle se fait lorsque le GameObject ayant ce script joue une animation je sait pas s'y ça change quelques choses.

Merci quand même pour vos réponses !

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

Re: Comment faire pour que la fonction OnTrigger marche sur un objet en particulier

Message par boubouk50 » 27 Juin 2016 18:23

Relis bien ton code et relis bien mon code. Tu as réussi à te gaufrer sur un copier-coller... Qui te donne un comportement faux mais sans erreur dans la console.
"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

Pixblazered
Messages : 12
Inscription : 24 Juin 2016 20:27

Re: Comment faire pour que la fonction OnTrigger marche sur un objet en particulier

Message par Pixblazered » 27 Juin 2016 18:54

Nan mais j'ai pas fait de copier-coller j'ai trouver finalement regarde :

Code : Tout sélectionner

	void OnTriggerEnter2D(Collider2D other) {
		

		if (other.gameObject == player) {
			Application.LoadLevel("w1g2");
		}

	}
player c'est la variable de mon gameObject j'ai tenter comme ça et maintenant ça ne prend que les colision avec ce gameObject.

Merci quand même pour votre aide !

Bonne soirée !

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

Re: Comment faire pour que la fonction OnTrigger marche sur un objet en particulier

Message par boubouk50 » 28 Juin 2016 09:06

As-tu au moins compris où était l'erreur?

tu avais un ';' à la fin de la condition qui la clos. Donc elle ne faisait rien et la suite était toujours exécutée.
Ton code ne fonctionne que si player est déclaré.
"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 « (C#) CSharp »