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

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
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

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

Message par freepl » 03 Mars 2022 12:07

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é 2960 fois
on clique dessus et on a ceci
ScreenShot127.jpg
ScreenShot127.jpg (20.19 Kio) Consulté 2960 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é 2960 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
Dernière édition par freepl le 03 Mars 2022 14:02, édité 1 fois.

Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

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

Message par freepl » 03 Mars 2022 12:23

Else validée
Vl enfoncé dans la route ( voir pneus arrières)
ScreenShot132.jpg
ScreenShot132.jpg (146.96 Kio) Consulté 2952 fois
else désactivée
les vl collent à la route
ScreenShot133.jpg
ScreenShot133.jpg (104.19 Kio) Consulté 2946 fois

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

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

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

Message par boubouk50 » 03 Mars 2022 13:06

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*/) 
"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

Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

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

Message par freepl » 03 Mars 2022 14:02

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

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

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

Message par boubouk50 » 03 Mars 2022 14:08

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.
"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

Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

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

Message par freepl » 03 Mars 2022 14:37

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 ?

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

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

Message par boubouk50 » 03 Mars 2022 15:20

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.
"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

Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

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

Message par freepl » 03 Mars 2022 15:33

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

Répondre

Revenir vers « (C#) CSharp »