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 = {
    "X": () => [ // acier
    sprite("steel"),
    area(),
    body(),
    anchor("bot"),
    falling(),
    respawn({ onDeath: true }),
    opacity(),
    scale(),
    "stomp",
    ],
    "s": () => [ // sable
    sprite("sand"),
    area(),
    body(),
    anchor("bot"),
    respawn({ onDeath: true }),
    falling(),
    opacity(),
    scale(),
    ],
    "#": () => [ // player 1
    sprite("bean"),
    platformerController(),
    jumpController(),
    sleep(),
    alive(),
    opacity(),
    scale(),
    health(1, 4),
    area(),
    body(),
    respawn(),
    falling(),
    rotate(),
    pos(0, -20),
    anchor("center"),
    ],
    "=": () => [ // block
    sprite("grass"),
    area({ collisionIgnore: ["agent"] }),
    body({ isStatic: true }),
    anchor("bot"),
    offscreen({ hide: true }),
    tile({ isObstacle: true }),
    ],
    }
  4. game.js
    scene("game", () => {
    const tiles = { ...TILE_CONFIG, ...LEVELS[CURRENT_LEVEL].tiles }
    const config = { ...LEVEL_CONFIG, ...LEVELS[CURRENT_LEVEL].config, ...{tiles:tiles}}
    const map = LEVELS[CURRENT_LEVEL].map.split('\n')
    const level = addLevel(map, config)
    const utility = add([
    multiplayerCamera(),
    ])
    setGravity(config.gravity)
    setBackground(config.backgroundColor)
    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'))
    on('jump', 'player', () => play('wooosh'))
    on('drop', 'player', () => play('off'))
    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) => obj.play('jump', { speed: 4, onEnd: () => obj.play('idle') }))
    on('drop', 'player', (obj) => obj.play('worry'))
    }
  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)
}),