Aller au contenu

Pics

Les pics peuvent permettre d’apporter un peu de challenge pour le joueur, ou de contraindre sa circulation. Un pic bien placé peut à lui seul s’avérer un obstacle sérieux.

  1. load.js
    const PNG = [
    'spike',
    'grass',
    ];
  2. load.js
    const MP3 = [
    'hit',
    'wooosh',
    'off',
    ];
  3. config.js
    const TILE_CONFIG = {
    // pic à l'endroit
    M: () => [
    sprite('spike'),
    area({ scale: vec2(0.6, 1), isSensor: true }),
    anchor('bot'),
    offscreen({ hide: true }),
    danger({ tag: 'player' }),
    pos(32, 64),
    ],
    // pic à l'envers
    W: () => [
    sprite('spike'),
    pos(32, 0),
    area({ scale: vec2(0.6, 1), isSensor: true }),
    anchor('bot'),
    rotate(180),
    offscreen({ hide: true }),
    danger({ tag: 'player' }),
    ],
    // pic vers la droite
    S: () => [
    sprite('spike'),
    area({ scale: vec2(0.6, 1), isSensor: true }),
    anchor('bot'),
    pos(0, 32),
    rotate(90),
    offscreen({ hide: true }),
    danger({ tag: 'player' }),
    ],
    // pic vers la gauche
    Z: () => [
    sprite('spike'),
    anchor('bot'),
    pos(64, 32),
    area({ scale: vec2(0.6, 1), isSensor: true }),
    rotate(270),
    offscreen({ hide: true }),
    danger({ tag: 'player' }),
    ],
    // 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 }),
    ],
    };
  4. level.js
    const LEVELS = [
    {
    map: `
    ===S M M M M
    === ==== ===
    W W Z==
    Z==S Z==
    # M M == M M
    ===================
    `,
    },
    ]
danger()
example
config.js
danger({
damage: 1,
collisions: ['top', 'left', 'bot', 'right'],
ongoing: false,
tag: '*',
on: true
}),