[Résolu] [MMF2] Liane et saut de liane

Démarré par Djipi, 23 Août 2013 à 11:53

0 Membres et 1 Invité sur ce sujet

23 Août 2013 à 11:53 Dernière édition: 24 Août 2013 à 22:01 par yoshi04
Bonjour à tous .

j'ai eu beau cherché des tutos je n'ai pas trouvé ce que je voulais :

Je voudrais faire un système de liane qui se balancerais de gauche à droite. Quand le haut de mon héros touche la partie basse de la liane , celui ci se balance : Voici un exemple image :



On voit que le héros s'accroche sur la partie haute du sprite mais qu'il suis aussi le mouvement de la liane , que se soit de gauche à droite et de haut en bas .

J'ai besoin de votre savoir et de votre aide.

Et bien logiquement (je ne connais pas MMF2), tu devrais tester si il y a collision entre le héros et une liane, et, si c'est le cas, tester quelle partie du sprite du héros est en collision. Ensuite, tu change le sprite du héros pour un sprite où il se balance, et tu ledéplace de façon à ce que son origine soit sur tel point de la liane.
C'est la façon la plus simple de faire je pense, mais ça veut dire que le lianes devraient toutes avoir la même vitesse de déplacement.
Ce que tu peut faire sinon, c'est, une fois que le héros est accroché à la liane, tester l'inclinaison de la liane afin d'afficher le sprite du héros correspondant. Je ne sais pas si tu comprends ce que je veut dire, mais en gros, si la liane est verticale, tu affiche un sprite du héros accroché verticalement, si la liane penche de 25°, tu affiche un sprite du héros accroché à 25°... Ça te permettrais de faire des lianes de la taille que tu veux et de la vitesse de balancement que tu veux. ;)

Merci Vaati31 , mais j'avais déjà compris comment faire pour l'accrochage , la partie sur laquel je but c'est la liane qui se balance , a une vitesse X modulable de préférence.

Je ne sais pas comment faire. Une idée?

On ne peut pas faire de mouvement circulaire avec MMF2 ? Car le mouvement de la liane est juste un arc de cercle.
Chaîne Twitch : diffusion en direct de sessions de développement de Solarus, de création de jeux, de parties de jeux vidéo.
Chaîne YouTube : replays des diffusions en direct, tutos Solarus
Compte Twitter : pour être au courant des nouveautés
Chat Discord : pour discuter en direct avec la communauté Solarus

23 Août 2013 à 17:15 #4 Dernière édition: 23 Août 2013 à 17:19 par Djipi
si on peut faire un mouvement circulaire mais le héros reste droit et ne s'incline pas. De plus quand on applique un mouvement de rotation , il se passe une rotation sur un point et non par rapport à l'objet.

C'est difficile dans la pratique et pourtant simple dans la théorie.

Il faudrait que tu fasse un mouvement circulaire sur la liane, et que tu fasse faire faire une rotation au héros sur lui même proportionnellement à la rotation de la liane.

Y a t'il un moyen de changer l'origine de rotation? Il me semble que sur MMF, c'est via l'éditeur d'animation (point chaud? point d'action?)

23 Août 2013 à 19:20 #7 Dernière édition: 23 Août 2013 à 20:06 par Cyberclic
Salut Djipi,

C'est assez simple à mettre en place avec MMF.

Tu crées une ligne verticale qui sera ta liane.
Tu mets le point chaud en haut au centre
Tu mets le point d'action là ou tu veux que ton personnage s'y accroche (vers le bas)
Tu crées un mouvement oscillatoire en faisant varier l'angle de ton objet liane. Par exemple de -45 à +45 et vice-versa.
Quand ton personnage entre en collision avec la liane, tu le fixes au point d'action de la liane.

Tu peux également changer l'angle de ton perso pour donner un peu plus de réalisme. Mais même s'il reste droit, ça le fait assez.

Après, si tu veux que ta liane ne reste pas rigide, tu as 2 possibilités :
Simple : Tu crées une animation de la liane qui se tord et tu la synchronise avec son mouvement de balancier
Complexe : Tu utilises des maths pour créer une liane avec plusieurs morceaux d'objet actifs reliés entres-eux.

Edit :
Voici un exemple de corde qu'on peut faire avec MMF. Ca ne vient pas de moi.
Il y a la source et l'executable pour les curieux qui n'ont pas MMF.

Touche SPACE pour changer d'exemple.

http://download.margasoft.fr/springchain.zip

Justement cyberclic c'es texactement ce que j'aimerais faire , une oscillation gauche droite à 45 , le point d'action sur le bas de la liane , le point de rotation en haut au centre.

Je voudrais comme tu me le dis faire une légère rotation de mon perso en même temps que la liane quand il est accroché.

J'ai regarder ton exemple mais c'est trop complexe je veux vraiment simple , comme ce que tu me propose. Mais pourrait tu me faire un exemple simple avec une liane qui oscille , un cube comme héros qui peux s'accrocher en sautant sur la liane et en touchant le bas de celle ci , et que ce cube tourne en fonction de la rotation de la liane?

Car malgrès tes explications , j'en comprend le principe mais pas du tout sa mis en pratique.

Une légère oscillation de la liane serait un énorme plus , je l'avoue . Si tu pouvais m'aider ce serait vraiment gentil de ta part.

Quitte à me prendre des cailloux (pour le premier message que je poste depuis 10 mois), je vais écrire ce que je pense : prétendre vouloir faire un jeu "pro" (par "pro" j'entends un jeu avec une demande de budget, etc) tout seul et ne pas savoir programmer ce que l'on souhaite, je trouve ça plutôt limite et assez décrédibilisant pour l'avenir du jeu ...
Qu'en sera-t-il des boss par exemple ?

Bref, j'arrête le HS ici et je développerai un peu plus le fond de ma pensée sur le topic du jeu ;)
(mais il y a quand même du bon dans ton projet hein, il ne faut pas le prendre mal !)

24 Août 2013 à 19:20 #10 Dernière édition: 24 Août 2013 à 19:25 par Cyberclic
Donc la liane doit aller de -45° à +45°.

Le plus simple c'est d'utiliser le cosinus (ou le sinus). Ca varie de -1 à 1. Et le mouvement est plus fluide avec une sinusoïde.

On peut faire cos(x)*45 pour avoir un nombre allant de -45 à +45
Ensuite, on peut dire que le x c'est le temps qui passe, pour éviter d'incrémenter une variable inutilement.

En utilisant cos(timer)*45 tu as une oscillation de -45° à +45°

Pour ralentir le mouvement, il suffit de diviser le timer, par un chiffre plus ou moins grand, en fonction de la vitesse que l'on souhaite.
Pour info, le timer s'incrémente de 1 à chaque millième de seconde.

On peut faire cos(timer/10)*45 pour avoir un truc pas mal.

Voici un exemple que j'ai fait :

http://download.margasoft.fr/liane.zip
(flèches gauche-droite du clavier pour se déplacer et touche shift pour sauter)

Désolé, c'est très moche, ça n'est que des carrés  :P

Cyberclic , merci beaucoup je comprend ce que tu m'as expliquer.

Linkdu83 , je n'ai aucunement la prétention de considérer mon jeu comme pro loin de là. Si j'ai monté la campagne Ulule c'est sur conseil d'un proche. Pour moi le projet était pas assez avancé , preuve en ai du soutien apporter pour le projet.

Pour ce qui est de la programmation , sache que je me suis pas trop mal débrouiller seul . Comme tout le monde j'ai parfois des difficulté et parfois j'ai besoin d'aide . Il me semble évident qu'Adalric Chronicle n'a rien d'un jeu pro. Et c'est très bien comme cela.

Quoiqu'il en soit , merci de ta remarque , j'ai fait une erreur avec Ulule et tant pis pour moi . Il n'y a rien en cela de décrédibilisant si ce n'ai de se dire "bon il a besoin d'aide". Mais rien de grave pour moi en tous les cas vu que j'avance pour mon propre plaisir.

Pour en revenir au sujet , j'ai eu ma réponse , un modérateur peut fermé la discussion.

Sur demande de l'auteur, on ferme :).