rotatingBlock
Fait tourner des objets autour d'un point
require
sight()parameters
| Parameter | Default Value | Type | Description |
|---|---|---|---|
tag | string | 'rotate' | |
speed | number | 60 | |
rotateSprite | boolean | false | |
relativeSpeed | boolean | true | |
offset | vec2 | vec2(0, 0) |
example
rotatingBlock({ tag: 'rotate', speed: 60, rotateSprite: false, relativeSpeed: true, offset: vec2(0, 0)}),function rotatingBlock(p) { const param = { tag: 'rotate', speed: 60, rotateSprite: false, relativeSpeed: true, offset: vec2(0, 0), ...p, }; return { rotationTarget: null, currentRotation: 0, rotationDistance: 0, startingRotation: 0, require: ['sight'], add() { let on = false; let rotationCenter = null; let startRotation = null; let rotation = 0; let distance = null;
this.on('target found', () => { startRotation = -this.currentTarget.pos.angle(this.pos); distance = this.currentTarget.pos.dist(this.pos); this.pos = this.currentTarget.pos.add( Vec2.fromAngle(startRotation).scale(distance) ); on = true; }); onUpdate(() => { if (on) { if (param.relativeSpeed) rotation += ((dt() * param.speed) / distance) * 100; else rotation += dt() * param.speed; this.pos = Vec2.fromAngle(rotation + startRotation) .scale(distance) .add(this.currentTarget.pos); if (param.rotateSprite) this.angle = rotation; } }); }, };}