Page 1 sur 4

Collision pas au top

Publié : 28 Oct 2015 20:50
par cortoh
Bonjour,
Je suis en train de réaliser un jeu qui fonctionne parfaitement mais il perdure un défaut plus ou moins gênant au niveau des collisions, en effet les collisions entres cubes s'effectues correctement mais ils se rentrent légèrement à l'intérieur entre eux.
J'ai codé pour le déplacement dans l'Update:

Code : Tout sélectionner

function Update () 
	{	
		if (action == true && face_Cube == 0) 
		{ 
			cont_Cube.transform.Translate(Vector3.left * speed * Time.deltaTime);	
		}
	}
Et pour l'arrêt:

Code : Tout sélectionner

function OnTriggerEnter (other : Collider) 
	{
		
		if (other.gameObject.tag == "Bloc_Mur")
		{
			srcAction_L.action = false;
			srcFace_L.face_Cube = 1;
		}

Pourquoi les cubes se rentrent un petit peu les uns dans les autres ?

Merci d'avance pour vos réponses.

Re: Collision pas au top

Publié : 28 Oct 2015 23:23
par Ohms
La méthode OnTriggerEnter est appellée dès lors qu'une collision a été détectée, et non avant qu'elle soit détectée.
Il est donc normal que tes objets se rentrent un peu dedans puisqu'au final si on reformule la phrase précédente : c'est le fait que tes objets se rentrent dedans qui va déclencher l'appel à la méthode OnTriggerEnter.

Ce que tu peux faire par exemple, c'est stocké à chaque frame la position de ton objet. Ensuite dans ton OnTriggerEnter (donc je rabache, mais dès lors que tes objets se rentrent dedans) ce que tu peux faire, c'est reforcer la position de ton objet, à la position préalablement stockée.

Ce n'est qu'une idée. Apres ca dépends du contexte de ce que tu veux faire (tu pourrais par exemple aussi faire des raycast pour trouver les coordonnées des murs, et donc placer ton objet pile poil contre le mur en y calculant le décalage en fonction)

Re: Collision pas au top

Publié : 29 Oct 2015 08:32
par cortoh
Merci pour ton aide je vais faire des essais.

Re: Collision pas au top

Publié : 29 Oct 2015 10:15
par boubouk50
Agrandit légèrement tes capsules de collisions?

Re: Collision pas au top

Publié : 19 Août 2017 09:38
par cortoh
Bonjour,

Après pas mal de temps d'absence j'ai repris Unity en main il y a peu et j'ai re-sortie mon projet sur lequel j'avais quelques difficultés comme
vous pouvez le lire sur ce post, problème qui est toujours présent et non réglé hélàs et comme mon niveau de compétence en code n'est pas terrible je rame pas mal, j'avais toutefois une idée mais je ne sais pas la coder hélas, je pensais faire avancer le cube d'une case à la fois, le cube ayant un scale de 1 je le ferais avancer d'une unité, une fois le déplacement fait il vérifie si la case suivant est vide ou pas si elle est vide il continue sa course automatiquement ou s'arrêt si c'est occupé par un autre objet, le cube aurait immenquablement une position excate et précise.
Je vous remercie d'avance pour toute l'aide que vous pourrez m'apporter.

Re: Collision pas au top

Publié : 20 Août 2017 10:07
par Greg
Les deux solutions me semblent viables mais celle de boubouk me parait plus simple, efficace et propre... (passer les cubes collider des cubes à +=0.2)

Re: Collision pas au top

Publié : 21 Août 2017 05:52
par cortoh
Bonjour Greg,
Désolé mais je n'ai pas saisi ce que tu as écrit entre parenthèse.

Re: Collision pas au top

Publié : 21 Août 2017 07:43
par Greg
Image

:merci:

Re: Collision pas au top

Publié : 21 Août 2017 18:14
par cortoh
Ok, j'ai saisi, je vais voir ce que ça donne, merci

Re: Collision pas au top

Publié : 01 Sep 2017 11:59
par E3DStef
Tiens j'en profite pour poser une question complémentaire.

Gérer les collisions via trigger ou collider = Ok

Mais si je veux comptabiliser qu'UNE SEULE fois la dite collision ?

Car quelque que soit la méthode (trigger ou collider) j'ai toujours plusieurs "touch" à mon compteur. Il l'a touché OK mais je ne veux le comptabiliser que pour 1 et non x (3,5,7 dépends param comme vitesse et taille des GO)...

Une idée ?

Merci