[résolu] inclinaison ?

Décidément ces jours ci je suis beaucoup présent dans l’aide ><
J’ai un problème, ou plutôt j’ai besoin de savoir si cela est possible. J’utilise toujours le moteur physique et j’ai besoin de 2 précisions :

Mon personnage est un rectangle. Je voudrais que mon personnage s’incline quand il rencontre une pente et glisse en fonction du degré de la pente, vous me dirais facile, oui mais et c’est la que ça coince, je ne veux pas que mon personnage puise faire un tour complet, en gros qu’il puisse glisser mais jamais ce retourner ? Je vous illustre cela par un exemple concret :

Sachant que la gestion des saut dois toujours etre présente, et bien c’est la que je coince ?

Ensuite je voudrais savoir s’il est possible de connaitre l’inclinaison de la pente, en gros l’inclinaison d’un objet ? Pour par exemple des que la pente devient trop à pic le personnage soit incontrôlable jusqu’à ce que la pente redevienne correcte ? Ou encore des que le personnage est en l’aire, en saut il se remettre automatiquement a l’horizontal ?

Tu peux éventuellement cocher la case “Fixer la rotation” ( ou quelque chose d’équivalent je ne me rappelle plus ) dans l’automatisme de ton objet pour l’empêcher de tourner, mais ce n’est pas adapté je pense à ce que tu souhaite.
Dans ton cas, tu peux tester l’angle de l’objet et si il est trop important ( ou trop négatif ), tu le remet à une valeur maximum. Exemple :

Conditions : La direction de Heros est >= à 45
Actions : Mettre la direction de Heros à 45
Conditions : La direction de Heros est <= à -45
Actions : Mettre la direction de Heros à -45

De manière générale, tu peux tester/modifier l’angle des objets grâce aux actions/conditions sur la direction ( Pour les objets Sprite ) ou sur l’angle de l’objet ( Pour la plupart des autres objets ).

Non car dans ce cas il ne tournera plus jamais, moi je veux qu’il s’incline en fonction de la pente mais qu’il ne puis jamais faire un tour complet, voir jamais ne dépasser un certaine angle d’inclinaison dans quel cas il serait amener a revenir vair l’horizontale. Cela me permettrais concretement de faire glisser mon personnage sans jamais que celui si glisse sur la tête ou sur le ventre ?!

Et bien ce serais parfait sauf que cela na pas marché pas, j’ai l’impression que la conditions : La direction de Héros est >= à 45 ne se produit jamais, ou en tous cas quel que soit l’angle que j’ai mis et l’action qui en résulte (pour les teste j’ai fait afficher un texte puis changer la couleur) rien ne c’est produit et pourtant j’ai fait faire de nombreuse rotation a mon objet héros ?
Je me suis ensuite dis, utilisant des masques de collision je pourrait en faire qui s’appliqueraient que pour les pentes, j’ai donc fait en sorte que mon héros prenne l’inclinaison de la pente, ça marche mais ça engendre beaucoup de soucis, car il faut ensuite lui redonner une inclinaison correcte ( ce qui serait bien mais que je n’ai pas trouver serait une action qui remet le héros a l’horizontale ?), je me suis alors dis qu’il fallait que je donne a mon héros une inclinaison égale a l’objet sur le quel il est mais le résultat est plutôt chaotique ><

Je réitère donc ma demande en la reformulant des fois que :
Je voudrait pouvoir tester l’inclinaison d’un objet, ou pouvoir faire en sorte que l’objet s’incline jusqu’à un certain degrés qu’il ne pourra jamais dépasser ?

Bref j’ai vraiment un souci, c’est le seul souci qu’il me reste pour faire fonctionner mon jeux comme je le souhaitais au dépare.

Est ce que ton héros est en rotation automatique ? Si oui, il ne devrait pas y avoir de problème, regarde l’angle avec le debugger.

Avec un objet Sprite, la solution est pourtant exactement ce que j’ai dit auparavant…
Sinon, tu peux toujours m’envoyer ton jeu en pièce jointe ( Par mail par exemple ) si tu souhaite que je regarde ça.

J’ai refais des testes, et mon pc devait avoir un bug car je re-testais ceci :

Conditions : La direction de Heros est >= à 45 Actions : Mettre la direction de Heros à 45 Conditions : La direction de Heros est <= à -45 Actions : Mettre la direction de Heros à -45

Alors oui la condition a bien lieu, par contre l’action ne fait que fixé un angle a l’objet. Moi ce que je voudrais c’est que l’objet ne puisse pas dépasser un certaine angle. De plus en fixant l’angle de l’objet celui ci ne tiens plus du tout compte des pentes même si j’ai bien sur coché “rotation automatique”.
En bref pour résumé le plus simplement possible il faudrait que mon objet puisse tourner quand il rencontre une pente mais qu’il ne puisse jamais dépasser un certaine angles, par contre il ne faut pas que je fixe l’angle, car celui si dois pouvoir s’adapter en fonction de l’inclinaison ?

Avec ça justement, tu devrais limiter l’angle et non pas le fixer.
Le problème vient surement du fait que tu teste un intervalle et que tu remet l’angle non pas à une valeur en dehors de cet intervalle, mais dedans. Bref, pour faire simple, enlève les = :

Conditions : La direction de Heros est > à 45 Actions : Mettre la direction de Heros à 45 Conditions : La direction de Heros est < à -45 Actions : Mettre la direction de Heros à -45

Avec les =, l’angle était toujours considéré comme mauvais, donc tout le temps remis à 45 ou -45.

J’ai du merder quelque part car je n’y arrive toujours pas :confused:
Bref si tu a le temps je poste une démo :
http://www.mediafire.com/?5171e1cha7czbla

Alors premièrement, un des problèmes vient de moi, la condition de test de direction ne fonctionne pas :blush: C’est un bug qui est corrigé pour la prochaine version, mais j’avais complétement oublié que ce bug trainait dans la version actuellement sur internet :blush:
Heureusement, il y a moyen de se débrouiller autrement, en testant si l’expression Heros.Direction est supérieur à 45 ( ou inférieur à - 45 ). Il faut également alors répéter ceci pour chaque objet Heros afin d’éviter de changer l’inclinaison de tous si un seul rempli la condition.

Ensuite, même si il n’y avait pas eu ce problème, il en restait deux autres minimes :
1- En remettant l’inclinaison à 45 ou -45, on modifie bien notre objet, mais il faut aussi remettre à zéro la vitesse angulaire ( vitesse de rotation ) au niveau de la physique de notre objet, sans quoi il continuerait à tourner, et à se remettre à 45°, et à tourner, et à se remettre à 45°, et à tourner, et à se remettre à 45°, et à tourner, bref il serait bloqué.
2- En remettant l’inclinaison à 45 ou -45 et en annulant la vitesse de rotation, on met l’objet en équilibre parfait ! Deux solutions, le mettre soit à 44° pour s’assurer qu’il retombe, soit lui mettre une petite vitesse angulaire pour le faire aller dans l’autre sens au lieu de mettre la vitesse angulaire à zéro.

J’ai rassemblé la solution au problème de Game Develop et les solutions aux deux petits problèmes qui se présente après, je pense que ça fonctionne correctement. Si tu met des pentes trop importantes, ça risque de faire bizarre, mais je pense que c’est quand même ce que tu souhaite :
Inclinaison.zip (299 KB)

Merci beaucoup, c’est exactement ça ! :wink:

Désolé du UP, mais j’ai de nouveau un problème avec les inclinaisons. Je pensais que tout marcher bien, et ces derniers jours je me suis concentré sur les graphismes et la première maquette de ceci, j’ai donc mis en pause la programmation du moteur. Mais voila en reprenant cette exemple je me suis aperçut qu’il y avait un moyen de comment dire mettre le héro dans une position plus que particulière, une image sera plus explicite :

Pour reproduire cela il suffit de monter la pente, jusqu’au rebord et ensuite de redescendre et le héro ce met dans cette position la.
J’ai trouvé en fouillant un peut un moyen d’éviter cela grâce a cette événement :

Il remplit bien ça tache mais des fois ça fait vraiment des trucs bizarre, en faite j’ai l’impression que c’est trop brusque alors forcement ça rends pas très bien.

Ma question est donc de savoir s’il existe un autre moyen de faire ce que je veux tout en gardant un rendu ingame satisfaisant ?
Inclinaison-1.rar (298 KB)

Bon alors j’ai un peut amélioré mon système, mais enfaite je voudrais avoir un moyens de remettre progressivement le Héros dans la bonne inclinaison.

Car la c’est vraiment direct, des que ça remplies les conditions paf il se remet sur la bonne inclinaison, et ça me dérange un peut que se soit aussi direct ?

Tu peux essayer d’ajouter une vitesse angulaire ( action du même nom ) à ton objet ( quand il est en l’air par exemple/en collision avec rien ) pour le remettre droit ( tu teste auparavant de quel coté il est penché et tu ajoute ensuite la vitesse angulaire ).

Bon est bien je pense que je suis arrivé a un résultat plutôt correcte, en tous cas sa me satisfait. Alors merci pour le conseil, j’ai en effet modifier la vitesse angulaire en tenant compte de l’inclinaison a la fois du perso, mais aussi de la pente, et du fait qu’il soit oui ou non en contacte avec celle ci. En plus j’en est profité pour mettre une très faible vitesse angulaire quand le perso et en l’aire, ce qui rends très bien !

Bref merci !