wheelController
Permet à un objet d'être controllé par un joueur
require
alive()body()triggers on self
"moved"parameters
| Parameter | Default Value | Type | Description |
|---|---|---|---|
moveSpeed | number | 480 | |
acceleration | number | 0.1 | |
speedDelay | number | 0.1 |
example
wheelController({ moveSpeed: 480, acceleration: 0.1, speedDelay: 0.1}),function wheelController(p) { const param = { moveSpeed: 480, acceleration: 0.1, speedDelay: 0.1, ...p, }; return { id: 'wheelController', direction: vec2(0, 0), require: ['alive', 'body'], isSlowedDown: false, isGliding: false, add() { let targetSpeed = 0; let currentSpeed = 0; onScroll((delta) => { const d = delta.y / Math.abs(delta.y) || 0; targetSpeed = clamp(targetSpeed + d * param.acceleration, -1, 1); }); onUpdate(() => { tween( currentSpeed, targetSpeed, param.speedDelay, (v) => (currentSpeed = v), easings.easeIn ); this.trigger('wheel speed change', currentSpeed); if (Math.abs(targetSpeed) > param.acceleration) this.trigger('moved'); this.move(vec2(1, 0).scale(currentSpeed).scale(param.moveSpeed)); }); this.on('respawn', () => { targetSpeed = 0; currentSpeed = 0; }); }, };}