gravitySwitchController
Permet à un objet d'être controllé par un joueur
triggers on self
"reverse gravity""moved"parameters
| Parameter | Default Value | Type | Description |
|---|---|---|---|
gravityKey | array | ['up', 'space'] | |
groundedOnly | boolean | true | |
groundedDelay | number | 0.1 |
example
gravitySwitchController({ gravityKey: ['up', 'space'], groundedOnly: true, groundedDelay: 0.1}),function gravitySwitchController(p) { const param = { gravityKey: ['up', 'space'], groundedOnly: true, groundedDelay: 0.1, ...p, }; return { id: 'gravitySwitchController', add() { let savedTime = time(); onKeyPress(param.gravityKey, () => { const grounded = !param.groundedOnly || time() - savedTime < param.groundedDelay; if (grounded) { this.trigger('reverse gravity'); this.trigger('moved'); for (const e of get('gravity', { recursive: true, })) { e.gravityScale = -e.gravityScale; e.trigger('facing', vec2(0, this.gravityScale)); } } }); this.onCollideUpdate((obj, col) => { if (obj.has('body')) { const top = this.gravityScale < 0 && col.isTop(); const bot = this.gravityScale > 0 && col.isBottom(); if (top || bot) savedTime = time(); } }); }, };}