Aller au contenu

Points de vie

Les points de vie peuvent permettre de modérer la difficulté du jeu. Ils peuvent aussi créer une économie dans le jeu dans laquelle les points de vies apparaissent comme une ressource plus ou moins limitée que le joueur sera tenté de dépenser judicieusement.

  1. load.js
    const PNG = [
    'heart',
    'grass',
    ];
  2. load.js
    const MP3 = [
    'powerup',
    'blip',
    'wooosh',
    'off',
    ];
  3. config.js
    const TILE_CONFIG = {
    // coeur
    '': () => [
    sprite('heart'),
    area({ isSensor: true }),
    anchor('center'),
    healing(),
    respawn(),
    pos(32, 32),
    ],
    // 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. config.js
    // player
    '#': () => [
    lifebar(),
    sprite('bean'),
    platformerController(),
    jumpController(),
    sleep(),
    alive(),
    opacity(),
    scale(),
    health(1, 4),
    area(),
    body(),
    respawn(),
    falling(),
    rotate(),
    pos(0, -20),
    anchor('center'),
    'player',
    ],
  5. events.js
    function events() {
    return {
    add() {
    // santé
    on('heal', 'healing', (obj) => {
    play('powerup');
    splashFX(obj.worldPos, {
    offset: vec2(0, -20),
    color: 'ee8fcb',
    });
    });
    on('maxed out', 'healing', () => play('blip'));
    // 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'),
    });
    });
    },
    };
    }
  6. level.js
    const LEVELS = [
    {
    map: `
    # ♥ ♥ ♥
    ===========
    `,
    },
    ]
lifebar()
example
config.js
lifebar({
sprite: 'heart',
margin: vec2(40, 40),
healAnimDuration: 0.6,
hurtAnimDuration: 0.2,
lifeZero: true,
iconSize: 40,
iconMarign: -10
}),