Problème Collision

Pour les scripts écrits en Javascript (UnityScript). :!: Obsolète :!:
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
cortoh
Messages : 159
Inscription : 22 Nov 2014 23:05

Problème Collision

Message par cortoh » 01 Avr 2015 19:20

Bonjour,
J'ai viens de terminé un script, il s'agit d'un test pour un projet, donc tout est ok mais j'ai un soucis dont je ne vois absolument pas comment trouver une parade.
J'ai 2 cubes dans ma scène qui se font face, quand je clique sur l'un d'eux il se déplace vers l'autre et vice versa.
Lorsque le cube qui se déplace viens toucher l'autre celui s'arrêt et recule légèrement (c'est voulu), le problème c'est que l'autre opère également le mouvement de recule lors de la collision et c'est ça qui est gênant, comment faire pour qui ne bouge pas.

Le script du cube_1: (Le cube_2 possède le même script avec une modife sur cette ligne: if(objetInfo.gameObject.tag == "cube_1"))

Code : Tout sélectionner

public 	var bougeCube	: 	int = 0;
	private var speed		: 	int = 3;

	function OnMouseDown ()
	{
	bougeCube = 1;
	}

	function OnCollisionEnter(objetInfo: Collision)
	{
		if(objetInfo.gameObject.tag == "cube_2")	 				
		{	
			bougeCube = 0;							// je stop le déplacement.
			transform.Translate(Vector3(0,0,0.1));	// Je fais revenir mon cube en arrière.
			
		}
	}	

	function Update () 
	{
		if (bougeCube == 1)
		{
			transform.Translate(Vector3.forward * -speed * Time.deltaTime);
		}
	}
Un peu d'aide serait la bienvenue.
Merci

Avatar de l’utilisateur
LudlowFx
Messages : 1367
Inscription : 19 Sep 2013 05:50

Re: Problème Collision

Message par LudlowFx » 01 Avr 2015 20:42

Tu ne te serais pas planté en assignant les scripts aux cubes ? Car là tu dis que c'est le script du cude_1 alors que c'est le tag du cube_2 qui est visé dans ton script ( if(objetInfo.gameObject.tag == "cube_2") ). Vérifie les tags aussi, tu as peut-être tagué les deux du même nom.
Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !

cortoh
Messages : 159
Inscription : 22 Nov 2014 23:05

Re: Problème Collision

Message par cortoh » 01 Avr 2015 21:02

Salut LudlowFx,
Non pas d'erreur, le script cube_1 j'ai "if(objetInfo.gameObject.tag == "cube_2")" et dans le script cube_2 j'ai "if(objetInfo.gameObject.tag == "cube_1"")" , les tags sont également vérifiés.

colone
Messages : 25
Inscription : 06 Mars 2015 22:45

Re: Problème Collision

Message par colone » 02 Avr 2015 00:59

Hello
A mon avis, cest que tes deux trigger se declanchent en mm temps vu que les deux cube se rentre dedans et qu'ils possedent la mm fonction de triggerEnter. Il faut que dans ta fonction triggerEnter tu trouve un moyen de savoir quel cube a ete clicke pour applique ton recule seulement a celui la.

Avatar de l’utilisateur
giyomuSan
Messages : 1799
Inscription : 09 Déc 2009 14:52
Localisation : Japon

Re: Problème Collision

Message par giyomuSan » 02 Avr 2015 02:50

ce que tu veux checker c lequel des cube est actuellement en mouvement lors de la collision , et c ce qui devrait determiner le cube qui doit reculer.

Pour ca tu peu utiliser Vector magnitude ou Velocity si tu utilise la physique.

Code : Tout sélectionner

if(objectInfo.gameObject.CompareTag("cube_2") && thisCubeIsMoving)
{
   // do something
}
Tu devrais aussi t'arranger pour avoir un seul script pour tes cubes...
tu peux mettre le tag cible dans un string visible dans l inspector ( du moins au depart c le plus simple )

Code : Tout sélectionner

public string TagCible;

// et ton check 
if(objectInfo.gameObject.CompareTag(TagCible)) && thisCubeIsMoving)
{
}
Pcq imagine si tu as 100 cube a gerer ...deja 100 tags hmm mais 100 script different juste pour une ligne de code qui change .. :o

cortoh
Messages : 159
Inscription : 22 Nov 2014 23:05

Re: Problème Collision

Message par cortoh » 02 Avr 2015 06:49

J'ai mis la variable "bougeCube" dans la condition comme ceci:

Code : Tout sélectionner

if(objetInfo.gameObject.tag == "cube_2" && bougeCube == 1)
et ça fonctionne pas trop mal.
Il me reste à réduire l'ensemble sur un seul script pour tout les cubes et c'est ok, merci pour vos réponses les amis, super forum ;) !

mike_muse
Messages : 46
Inscription : 29 Mars 2015 17:07

Re: Problème Collision

Message par mike_muse » 03 Avr 2015 16:46

Si tu mettais tes cubes en Is Trigger afin que les forces n'affecte pas ton autre cube touché ??

mike_muse
Messages : 46
Inscription : 29 Mars 2015 17:07

Re: Problème Collision

Message par mike_muse » 03 Avr 2015 16:52

cortoh a écrit :Salut LudlowFx,
Non pas d'erreur, le script cube_1 j'ai "if(objetInfo.gameObject.tag == "cube_2")" et dans le script cube_2 j'ai "if(objetInfo.gameObject.tag == "cube_1"")" , les tags sont également vérifiés.
et la justement c'est le souci. Quand tu touche ton cube_2 avec ton cube_1, les deux scripts se lancent en meme temps d'où le recul des deux cubes. Donc je pense qu'un seul script suffirait avec tout simplement que tu assigne ton script au deux cubes et que tu met correctement les bons gameObject que tu as besoin.

Ps: Ouais je m'excuse je suis pas sur que j'ai dis quelque chose de tres français ^^

Verrouillé

Revenir vers « (Js) Javascript »