❤ 0 Ce tutoriel propose une solution si vous rencontrez des problèmes de reconnaissance des touches (certaines peuvent parfois être "sautées").
Ce tutoriel est non nécessaire pour la version Steam de RM2003, où le problème est corrigé.
Alors comme ça le code touche il fait des siennes ?
On a beau maitenir une touche, mais des fois, pendant quelque frames, le code touche s'annule ?
Même si on y met une pression à bousiller le clavier ?
Alors, voici une astuce qui permettra au code touche d'être plus sympa avec vous.
On va juste prendre l'exemple des quatre touches directionnelles, pour l'instant.
Tout d'abord, il faut réserver au moins :
* Deux fois le nombre de touches différentes en interrupteurs (dans notre exemple, c'est huit)
- Appui Haut
- Appui Droite
- Appui Gauche
- Appui Bas
- Front Haut
- Front Droite
- Front Gauche
- Front Bas
* Une fois le nombre de touches concernées, plus un, en variables.
- Attente Haut
- Attente Droite
- Attente Gauche
- Attente Bas
- Attente Globale
(sans avoir compté le code touche)
- Touche Haut Bas
- Touche Gauche Droite
(on peut très bien mettre quatre demandes de touches pour les flèches directionnelles, mais deux c'est mieux)
La variable "attente globale" sert à contrôler le temps de passabilité d'une touche en frames.
En gros, si vous maintenez une touche et que son contrôle foire, il se passe un certain temps avant que son interrupteur lié soit désactivé.
Avec Attente globale = 0, c'est exactement comme le code touche habituel...
Attente globale = 5+ est à éviter tout autant, car il empêche le martelage correct d'une touche lors d'un QTE.
Personellement, j'ai mis Attente globale = 2, et je m'en porte très bien.
Bon, passons à l'event making :
Tout se fait dans un événement commun en processus parallèle.
(ou alors, il peut aussi être lancé par appel depuis un event en démarrage automatique si seulement il l'appelle à chaque frame, dans ce cas, enlevez le "attendre 0.0 sec au début".
Citation: # X concerne une seule direction.
# le code entier fait donc en gros quatre fois ça.
#début
Attendre 0.0 Sec
Appui Touche : Haut Bas
Appui Touche : Gauche Droite
#note : vous pouvez evidemment ne faire q'une ou quatre demandes d'appui touche.
# On désactive les pulses qui ont étés activés lors de l'itération précédente
SI Front X ON
{
SWITCH Front X OFF
}
SI Appui X OFF
{
SI touche X pressée (avec la variable)
{
VARIABLE Attente X = Attente globale
SWITCH Front X ON
SWITCH Appui X ON
#vous pouvez mettre des sons ici pour savoir sur quelle touche vous appuyez lors d'un quelconque débug.
}
}
SINON
{
SI touche X pressée (avec la variable)
{
VARIABLE Attente X : = Attente globale
}
SINON
{
SI Attente X > 0
{
VARIABLE Attente X : - 1
}
SINON
{
SWITCH Appui X OFF
#pareil, un bruitage ici prouvera à quel moment le jeu considère que la touche n'est plus appuyée
}
}
}
#-- >répéter 4 fois pour chaque X = haut, droite, gauche, bas
#pensez a bien concorder les conditions des variables selon la direction concernée
#fin |
Cela doit pouvoir fonctionner également en remplaçant X par "Confirmer", "Annuler", "Shift" et compagnie.
Désormais, il ne vous reste plus qu'à changer les conditions du genre (si variable "touche haut" = 4) par (si interrupteur "Appui Haut" ON).
|