BeePlayer — Documentazione Tecnica
Personaggio giocabile:
setMode /
jump /
consumeAttack
📁 Panoramica
BeePlayer è un BeeEntity con
input, vite e score. Vive in
src/gameplay/BeePlayer.js. Due modi:
setMode('platformer') (gravità 500, salto
su grounded) e setMode('free') (gravità 0,
WASD su vx/vy). Non assegnare
this.mode a mano: la gravità segue
setMode.
La demo lo mette in platformer, gruppo
player, solid contro
solids. Il salto vede
isGrounded solo se
collisions.run() gira prima
dell’update del player (in demo:
scene.update).
📁 Update
Senza input non esce:
integrate e i figli girano lo stesso.
Senza tasti, in platformer vx = 0 solo
se input c’è.
-
1. spento
destroyed/!active→ return. -
2. boost
_boost.update(time)(odt). -
3. inputSe c’è:
vx, X/J →wantsAttack, salto o volo. -
4. entity
super.update→integrate(poiisGrounded = false).
Tasti event.code: frecce / WASD, Spazio
salta in platformer. In free, W/S tengono
vy a ±speed; senza tasti
verticali vy = 0 (niente caduta: gravità
è 0).
📁 Attacco, boost, vite
wantsAttack è un impulso: X o J lo
accendono. consumeAttack() legge e
spegne. Se nessuno lo chiama, resta
true finché qualcuno non lo consuma.
boostJump(amount) è permanente
(_permanentBoostAmount,
jumpForce = baseJumpForce - amount: più
amount, più in alto). boostJumpTemporary
sovrascrive la forza per N ms (tempo di
simulazione); allo scadere torna al permanente, non
al base nudo. Alias: potenziaSalto /
potenziaSaltoTemporaneo.
takeDamage scala le vite, clamp a 0,
ritorna true se morte. Niente invuln,
niente knockback, niente destroy.
addScore somma e basta.
📁 Dove è facile sbagliare
Usa setMode.
player.mode = 'free' non tocca
gravity: continui a cadere.
Il salto ha bisogno dei solidi prima.
integrate azzera isGrounded
a fine frame. Se collisions.run() sta
dopo l’update del player, non salti mai.
Il temporaneo non si somma al permanente.
Mentre il timer gira,
jumpForce = base - amount del temp.
Poi riparte il permanente.
consumeAttack è tuo. Il
player non lo chiama. Animator o scena, ogni frame
in cui vuoi l’impulso.
📁 Esempio: free + attacco
📁 Riepilogo API
Estende BeeEntity. Input opzionale:
senza tasti, la fisica gira lo stesso.
| Membro | Ritorna | Scopo |
|---|---|---|
new BeePlayer(x?, y?, w?, h?, textureKey?) |
BeePlayer |
Default 100,100 40×40, speed 220, vite 3. Parte in platformer. |
setMode('platformer'|'free') |
this |
Mode + gravity 500 o 0. |
jump() |
— | vy = jumpForce se grounded o
free. Poi isGrounded = false. |
boostJump(amount) /
boostJumpTemporary(amount, ms) |
— | Permanente vs finestra. Temp allo scadere → permanente. |
consumeAttack() |
boolean |
Legge e azzera
wantsAttack. X/J lo
accendono. |
addScore(points) /
takeDamage(n?) |
— / boolean |
Score += . Vite clamp 0; true se morte. Niente i-frames. |
update(dt, input, engine) |
— | Early-return se spento. Input se c’è.
Sempre super.update. |
draw(ctx, engine) |
— | sprite (flipX da vx) o
getAsset o cubo blu.
save/restore. |
destroy() |
— | Cancel del boost +
super.destroy. |