Aller au contenu

Mouvement alterné

Les plateformes en mouvement permettent d’introduire une dimension de timing dans les déplacements du joueur. Le mouvement alternatif de ces plateformes peut permettent au joueur de pouvoir prédir leur position et de planifier ces mouvements en conséquences. Avec un peu de créativité, l’utilisation des plateformes peut permettre une grande variété de défi pour le joueur.

  1. load.js
    const PNG = [
    'plate',
    'grass',
    ];
  2. config.js
    const TILE_CONFIG = {
    // plateforme en mouvement <-
    '<': () => [
    sprite('plate'),
    pos(32, 0),
    movingBackAndForth({
    direction: vec2(-1, 0),
    }),
    body({ isStatic: true }),
    offscreen({ hide: true }),
    area(),
    anchor('top'),
    ],
    // plateforme en mouvement ->
    '>': () => [
    sprite('plate'),
    pos(32, 0),
    movingBackAndForth({
    direction: vec2(1, 0),
    }),
    body({ isStatic: true }),
    offscreen({ hide: true }),
    area(),
    anchor('top'),
    ],
    // plateforme en mouvement ^
    '^': () => [
    sprite('plate'),
    pos(32, 0),
    movingBackAndForth({
    direction: vec2(0, -1),
    }),
    body({ isStatic: true }),
    offscreen({ hide: true }),
    area(),
    anchor('top'),
    ],
    // plateforme en mouvement v
    v: () => [
    sprite('plate'),
    pos(32, 0),
    movingBackAndForth({
    direction: vec2(0, 1),
    }),
    body({ isStatic: true }),
    offscreen({ hide: true }),
    area(),
    anchor('top'),
    ],
    // stopper
    x: () => [
    rect(60, 60),
    pos(0, 2),
    opacity(0),
    area({ isSensor: true }),
    'stopper',
    ],
    // 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: `
    x < x
    x x
    # ^
    === v ===
    x x
    x > x
    `,
    },
    ]
movingBackAndForth()
example
config.js
movingBackAndForth({
direction: vec2(1, 0),
speed: 100,
switchDelay: 1
}),