Aller au contenu

Bloc qui tourne

Les plateformes en mouvement permettent d’introduire une dimension de timing dans les déplacements du joueur. Le mouvement circulaire et continu de ces blocs permet une grande prédictibilité pour le joueur et peut ainsi lui permettre de planifier ces déplacements. Lorsque la sprite des blocs tourne également, ces plateformes peuvent s’ouvrir à une grande diversité d’utilisations dans lesquelles les murs deviennent alternativement des sols et inversement.

  1. load.js
    const PNG = [
    'stone',
    'sun',
    'grass',
    ];
  2. config.js
    const TILE_CONFIG = {
    // block qui tourne en sens anti-horaire
    '': () => [
    sprite('stone'),
    area(),
    anchor('center'),
    body({ isStatic: true }),
    offscreen({ hide: true }),
    rotatingBlock({ speed: -60 }),
    pos(32, 32),
    sight({ tag: 'rotate', sight: 1200, onAddOnly: true }),
    ],
    // block qui tourne en sens horaire
    '': () => [
    sprite('stone'),
    area(),
    anchor('center'),
    body({ isStatic: true }),
    offscreen({ hide: true }),
    rotatingBlock({ speed: 60 }),
    pos(32, 32),
    sight({ tag: 'rotate', sight: 1200, onAddOnly: true }),
    ],
    // player
    '#': () => [
    sprite('bean'),
    platformerController(),
    jumpController(),
    sleep(),
    alive(),
    opacity(),
    scale(),
    health(1, 4),
    area(),
    body(),
    respawn(),
    falling(),
    rotate(),
    pos(0, -20),
    anchor('center'),
    'player',
    ],
    // block
    '=': () => [
    sprite('grass-tileset'),
    offscreen({ hide: true }),
    tile({ isObstacle: true }),
    autoTiling(),
    area(),
    body({ isStatic: true }),
    ],
    };
  3. level.js
    const LEVELS = [
    {
    map: `
    #
    ===== o o ≥ o ≥ o ≤ ≤ o ===
    `,
    },
    ]
rotatingBlock()
example
config.js
rotatingBlock({
tag: 'rotate',
speed: 60,
rotateSprite: false,
relativeSpeed: true,
offset: vec2(0, 0)
}),