Aller au contenu

Bloc amovible

Les blocs qui écrasent sont des objets dynamiques que le joueur peut pousser, mais qui lui sont hostiles si elles le touchent par le haut alors que celui-ci est au contact du sol.

  1. load.js
    const PNG = [
    'sand',
    'steel',
    'grass',
    ];
  2. load.js
    const MP3 = [
    'squish',
    'wooosh',
    'off',
    ];
  3. config.js
    const TILE_CONFIG = {
    // acier
    X: () => [
    sprite('steel'),
    area(),
    body(),
    anchor('bot'),
    falling(),
    respawn({ onDeath: true }),
    opacity(),
    squish(),
    scale(),
    'stomp',
    pos(32, 64),
    ],
    // sable
    s: () => [
    sprite('sand'),
    area(),
    body(),
    anchor('bot'),
    respawn({ onDeath: true }),
    falling(),
    opacity(),
    scale(),
    pos(32, 64),
    ],
    // 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. game.js
    function events() {
    return {
    add() {
    on('hurt', 'alive', (obj) => colorShiftFx(obj, { color: 'ff9b9b' }))
    on('hurt', 'alive', () => play('hit'))
    on('hurt', 'player', (obj) => obj.play('worry', { speed: 2, onEnd: () => obj.play('idle') }))
    on('stomp', 'stomp', () => play('squish'))
    // personnages
    on('respawn', 'alive', (obj) => (obj.flipY = false));
    on('hurt', 'alive', (obj) => {
    play('hit');
    colorShiftFx(obj, { color: 'ff9b9b' });
    });
    on('death', 'alive', (obj) => {
    obj.flipY = true;
    wait(0.2, () => {
    if (!obj.isAlive) {
    obj.hidden = true;
    obj.collisionIgnore = ['*'];
    obj.isStatic = true;
    }
    });
    });
    // joueur
    on('respawn', 'player', (obj) => obj.play('idle'));
    on('sleep', 'player', (obj) => obj.play('sleep'));
    on('awake', 'player', (obj) => obj.play('idle'));
    on('jump', 'player', (obj) => {
    play('wooosh');
    obj.play('jump', {
    speed: 4,
    onEnd: () => obj.play('idle'),
    });
    });
    on('drop', 'player', (obj) => {
    play('off');
    obj.play('worry');
    });
    on('hurt', 'player', (obj) => {
    obj.play('worry', {
    speed: 2,
    onEnd: () => obj.play('idle'),
    });
    });
    },
    };
    }
  5. level.js
    const LEVELS = [
    {
    map: `
    ===
    X
    X
    === s s
    s
    #
    ============ s
    ===
    `,
    },
    ]
respawn()
example
config.js
respawn({
onDeath: false,
onPlayerDeath: true,
appearAnimDuration: 0.4,
delay: 0.4,
hiddenPosition: vec2(-1000, -1000)
}),