[Résolu] Problème de saut.

Démarré par Vorg-sama, 21 Novembre 2008 à 17:24

0 Membres et 1 Invité sur ce sujet

21 Novembre 2008 à 17:24 Dernière édition: 21 Novembre 2008 à 22:41 par yoshi04
Etant donné que je n'aurais pas d'aide (visiblement) sur mon topic, je poste à nouveau mon problème dans un nouveau forum.

C'est pour le saut de mario. Lorsque je ne me déplace pas, il est très fluide (enfin je trouve), seulement le problème est lorsque je me déplace, il n'est absolument pas fluide, on voit carrément deux mario et on ne le voit pas se déplacer dans les airs, résultat mario se retrouve quelques cases plus haut Oo.

J'aurais vraiment besoin d'aide, et pour cela je vais vous montrer une vidéo sur le saut sans déplacement et avec déplacement. Puis la programmation que j'ai faite en screen. Autre information, je suis sur VX.

Saut sans déplacement
Saut avec déplacement

Et voici la screen. Sur XP ça marchait très bien.

[spoiler][/spoiler]

Merci à l'avance pour votre aide ! ^^

Pourquoi tu ne fais aps les animations avec l'outil d'animations de combat ? ca marche très bien pour se genre de truc.

Je peux te proposer une technique plus complexe, peut-être que ça marchera mieux avec ?




Lors du saut, actualiser une variable où se trouve la position du heros AVANT le saut, en x ou y selon la direction,
de la modifier de sorte à faire $variable+(16*nombre de cases de saut).
Puis change le charset du héros par un transparent au lieu d'utiliser RM pour ça, et lance l'animation tout de suite après.
Calcul la durée total de l'animation, et remet le charset du héros sois pile à la fin de l'animation, sois à un ou quelques frame après selon ce que tu préfère niveau rendu ;).

Pour un saut basique, il te suffit de ne pas utiliser d'option de déplacement ( par contre modifie bien el charset et fais le truc en animation ) ;).

Bien sur, tu peux "entourer" ce code par des interrupteurs ^_^.




Sinon, j'ai une remarque à faire : ne code pas ton simili-moteur comme ça si tu veux éviter du lagg.
Au lieu de vérifier toutes tes actions en temps réel ( processus parallèle ), essaie de minimiser un maximum les événements actifs ( qui exécutent une tache ou vérifient quelque chose ).

Exemple :

EVENT 1 : Si une touche est pressée, activer évent 2
EVENT 2 : Vérifier quelle touche est pressée ( ne vérifier que les touche utilisées par le moteur bien sur ) puis activer uniquement l'événement x correspondant à l'action
EVENT X : Appeler l'événement commun y.

Ceci ne marche que les actions qui ne doivent pas être vérifiés en permanence ;).
En gros, essaie de limiter un maximum le nombre de trucs qui se déroulent sur ta carte en même temps ;).

J'espère que ça t'aidera :).

    







21 Novembre 2008 à 18:42 #2 Dernière édition: 21 Novembre 2008 à 22:41 par yoshi04
@Vorg

Se serait peut être bien que tu nous dresses l'algorithme complet ?

Sinon je ne sais pas si cela a été corrigé, mais je me souviens que sur les anciennes version de rpg maker, les "attendre 1 (ou 0) frame" pouvaient parfois arranger les choses.


C'est bon, problème résolu, merci à vous  ^_^.