Commandes personnage : détection de touche au clavier + touches d'animation supplémentaires
Deux retours utilisateur sur le panneau "Commandes" (déplacement/
animation automatiques, voir précédent commit) :
- Les champs de touche (haut/bas/gauche/droite/interagir) capturent
maintenant la touche au clavier (clic puis appui — event.key, même
valeur que heldKeys/triggers.js) au lieu d'être tapés à la main,
source d'erreurs ("Espace" vs " ", "flèche haut" vs "ArrowUp"...).
- Nouvelle section "Animations supplémentaires" : un nombre illimité de
touches, chacune liée à UNE pose au choix parmi celles réellement
disponibles pour ce personnage (sauter, attaquer, courir...) — pas
seulement les 4 touches de déplacement + interagir.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
74f7ca396f
commit
5891c82c62
@@ -15,7 +15,7 @@ const actionsMod = require('../actions.js');
|
||||
Object.assign(global, actionsMod);
|
||||
|
||||
const {
|
||||
forgePersonnageAnimExists, forgePersonnageMovementAnim, forgePersonnageIdleAnim,
|
||||
forgePersonnageAnimExists, forgePersonnageMovementAnim, forgePersonnageIdleAnim, forgePersonnageActionAnim,
|
||||
forgeRunPersonnageControllerTick,
|
||||
} = require('../personnage-controller.js');
|
||||
|
||||
@@ -121,3 +121,19 @@ test('tick — ignore tout objet qui n\'est pas kind="personnage" ou sans comman
|
||||
assert.doesNotThrow(() => forgeRunPersonnageControllerTick({ elements: [decor] }));
|
||||
});
|
||||
});
|
||||
|
||||
// Touches supplémentaires (sauter, attaquer...) — bug remonté par
|
||||
// l'utilisateur : au-delà des 4 touches de déplacement et de "interagir",
|
||||
// il manquait un moyen de lier une touche à N'IMPORTE QUELLE autre pose du
|
||||
// personnage (voir "Animations supplémentaires", templates/scene_edit.html).
|
||||
test('forgePersonnageActionAnim — "interagir" prioritaire, sinon la touche supplémentaire correspondante', () => {
|
||||
const cmd = { interagir: 'e', extra: [{ touche: 'j', animation: 'jump' }, { touche: 'a', animation: 'attack' }] };
|
||||
assert.equal(forgePersonnageActionAnim(cmd, 'e'), 'interact');
|
||||
assert.equal(forgePersonnageActionAnim(cmd, 'j'), 'jump');
|
||||
assert.equal(forgePersonnageActionAnim(cmd, 'a'), 'attack');
|
||||
assert.equal(forgePersonnageActionAnim(cmd, 'x'), null); // touche non liée
|
||||
});
|
||||
|
||||
test('forgePersonnageActionAnim — commandes sans "extra" (personnage posé avant l\'ajout du réglage)', () => {
|
||||
assert.equal(forgePersonnageActionAnim({ interagir: 'e' }, 'j'), null);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user