Page 1 sur 1

[RESOLU] [MY-AL] Vehicule suit une pente / transform.FindChild récuperer tous les eléments suivants

Publié : 03 Mars 2022 12:07
par freepl
Bonjour

(@boubouk50 c'est presque comme pour le tunnel)

Dans la maquette que j'ai les vélos suivaient une trajectoire mais ne se collaient pas à la route.
Avec l'aide de Boubouk50 le problème a été résolu en utilisant le tag choisir le tag du véhicule ( velo ici) et lookat

Code : Tout sélectionner

if (gameObject.tag == "VELO") 
			{
				transform.LookAt(iTween.PointOnPath(tabtList, fraction + 0.08f)); //0.05F  plus c'est petit est plus de tremblote pour s'orienter sur le point à 0.005m
			}
			/*else //si non validée les vl se collent à la route mais caméra aérienne à l'envers   Si validée camera aérienne ok mais vl non collés
			{
				Vector3 direction =iTween.PointOnPath(tabtList, fraction + 0.08f); //0.05F
				direction.y = this.transform.position.y;
				transform.LookAt(direction);
			}*/
			
			
J'ai créé une caméra aérienne qui se lance par un btn qui en affiche plusieurs type bouton de magnétoscope ( avance recule marche stop pause)
ScreenShot126.jpg
ScreenShot126.jpg (28.23 Kio) Consulté 3854 fois
on clique dessus et on a ceci
ScreenShot127.jpg
ScreenShot127.jpg (20.19 Kio) Consulté 3854 fois
au bout de 3 sec on a ceci , les boutons de commande restent affichés ( disont true)
ScreenShot129.jpg
ScreenShot129.jpg (33.84 Kio) Consulté 3854 fois
partie /*else..*/ invalidée
Cela fonctionne bien, tous les éléments roulants sont plaqués sur la route avec la partie /*else..*/ invalidée.
Mais dans ce cas la caméra aérienne regarde à l'envers

partie else.. validée
Quand je valide la partie else, la caméra suit bien le trajet demandé mais les véhicules quelque soit le tag ne se plaquent plus sur la route
(Photo réponse suivante)



Dans mon script je créée un bool

Code : Tout sélectionner

private bool SiBtnCameraAerienne = false;   // la caméra aérienne est inactive au départ
ensuite je la lie aux éléments de Hyerarchy de mon projet
(Photo réponse suivante)

Code : Tout sélectionner

SiBtnCameraAerienne = GameObject.Find("Canvas a masquer").transform.FindChild("Interface btns commande trajet aerien")???????; //.GetComponent<Light>();
mais je ne vois pas comment dire que ma recherche s'arrete QUE à "Interface btns commande trajet aerien"
car ensuite je code ceci pour la caméra aérienne

Code : Tout sélectionner

if (SiBtnCameraAerienne == true) // pour que la caméra aérienne soit orientée selon le sens de la trajectoire et non à l'envers
			{
				Vector3 direction =iTween.PointOnPath(tabtList, fraction + 0.08f); //0.05F pour que le piéton reste vertical
				direction.y = this.transform.position.y;
				transform.LookAt(direction);
			}
donc si SiBtnCameraAerienne == true ( donc mes boutons de magnétoscopes sont visibles) je voudrais que ma caméra regarde devant elle et non derrière.

Merci

Re: [MY-AL] Vehicule suit une pente / transform.FindChild récuperer tous les eléments suivants

Publié : 03 Mars 2022 12:23
par freepl
Else validée
Vl enfoncé dans la route ( voir pneus arrières)
ScreenShot132.jpg
ScreenShot132.jpg (146.96 Kio) Consulté 3846 fois
else désactivée
les vl collent à la route
ScreenShot133.jpg
ScreenShot133.jpg (104.19 Kio) Consulté 3840 fois

hierarchy
ScreenShot130.jpg
ScreenShot130.jpg (62.13 Kio) Consulté 3846 fois

Re: [MY-AL] Vehicule suit une pente / transform.FindChild récuperer tous les eléments suivants

Publié : 03 Mars 2022 13:06
par boubouk50
A quel moment bouger une caméra ferait changer le transform de tes véhicules? Par quelle logique???

Quelle que soit la position de ta caméra, elle ne devrait avoir aucun lien direct avec tes objets.

Code : Tout sélectionner

/*else //si non validée les vl se collent à la route mais caméra aérienne à l'envers   Si validée camera aérienne ok mais vl non collés
{
	Vector3 direction =iTween.PointOnPath(tabtList, fraction + 0.08f); //0.05F
	direction.y = this.transform.position.y;
	transform.LookAt(direction);
}*/
Tu gères la caméra en même temps que les véhicules?? Par Tag??

Si un objet va dans le else, c'est que son Tag ne va pas dans le if, donc il faut que tu identifies tous les tags de véhicule.

Code : Tout sélectionner

if (gameObject.tag == "VELO" || gameObject.tag == "VEHICULE"/*Et tous les autres comme MOTO, CAMION, etc*/) 

Re: [MY-AL] Vehicule suit une pente / transform.FindChild récuperer tous les eléments suivants

Publié : 03 Mars 2022 14:02
par freepl
la caméra de trajet aérienne est activée par le bouton.
sinon c'est une caméra classique gérée par clavier-souris.

code modifié

Code : Tout sélectionner

if (gameObject.tag == "VELO" || gameObject.tag == "VEHICULE" || gameObject.tag == "VELO"|| gameObject.tag == "PIETON"|| gameObject.tag == "BUS"/*Et tous les autres comme MOTO, CAMION, etc*/) 
			{
				transform.LookAt(iTween.PointOnPath(tabtList, fraction + 0.08f)); //0.05F  plus c'est petit est plus de tremblote pour s'orienter sur le point à 0.005m
			}
		

			else //c'est la caméra aérienne qui n'a pas besoin d'etre collée au sol 
			{
				Vector3 direction =iTween.PointOnPath(tabtList, fraction + 0.08f); //0.05F
				direction.y = this.transform.position.y;
				transform.LookAt(direction);
			}


Merci

Re: [RESOLU] [MY-AL] Vehicule suit une pente / transform.FindChild récuperer tous les eléments suivants

Publié : 03 Mars 2022 14:08
par boubouk50
Ce serait peut-être plus simple de faire l'inverse. C'est à dire tester si c'est la caméra plutôt que tous les autres.

Code : Tout sélectionner

if (gameObject.tag == "CAMERA") //c'est la caméra aérienne qui n'a pas besoin d'etre collée au sol 
{
	Vector3 direction =iTween.PointOnPath(tabtList, fraction + 0.08f); //0.05F
	direction.y = this.transform.position.y;
	transform.LookAt(direction);
}
else
{
	transform.LookAt(iTween.PointOnPath(tabtList, fraction + 0.08f)); //0.05F  plus c'est petit est plus de tremblote pour s'orienter sur le point à 0.005m
}
Attention tout de même, les piétons restent verticaux et ne suivent pas la pente du sol...

Ceci est une solution, mais la logique est juste horrible. La caméra ne devrait pas être traitée au même titre qu'un véhicule ou un piéton.

Re: [RESOLU] [MY-AL] Vehicule suit une pente / transform.FindChild récuperer tous les eléments suivants

Publié : 03 Mars 2022 14:37
par freepl
boubouk50 a écrit :
03 Mars 2022 14:08
Attention tout de même, les piétons restent verticaux et ne suivent pas la pente du sol...
C'est normal non ? Un piéton est toujours vertical, sur une montagne il ne va pas être perpendiculaire au sol non ?

Re: [RESOLU] [MY-AL] Vehicule suit une pente / transform.FindChild récuperer tous les eléments suivants

Publié : 03 Mars 2022 15:20
par boubouk50
Oui, ben dans tes conditions tu les as mis avec les véhicules.
Donc ils vont être perpendiculaires à la pente et pas verticaux. C'est pour ça que je le signalais.

Re: [RESOLU] [MY-AL] Vehicule suit une pente / transform.FindChild récuperer tous les eléments suivants

Publié : 03 Mars 2022 15:33
par freepl
Merci je n'avais pas vu

Code : Tout sélectionner

			if (gameObject.tag == "VELO" || gameObject.tag == "VEHICULE" || gameObject.tag == "BUS"/*Et tous les autres comme MOTO, CAMION, etc*/) 
			{
				transform.LookAt(iTween.PointOnPath(tabtList, fraction + 0.08f)); //0.05F  plus c'est petit est plus de tremblote pour s'orienter sur le point à 0.005m
			}
		

			else //c'est les pietons, qui restent verticaux, ou la camera aérienne qui n'a pas besoin de suivre la pente du terrain 
			{
				Vector3 direction =iTween.PointOnPath(tabtList, fraction + 0.08f); //0.05F
				direction.y = this.transform.position.y;
				transform.LookAt(direction);
			}
Bonne journée