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 = {
    "M": () => [ // pic à l'endroit
    sprite("spike"),
    area({ scale: vec2(0.6, 1) }),
    anchor("bot"),
    offscreen({ hide: true }),
    danger({ tag: "player" }),
    ],
    "W": () => [ // pic à l'envers
    sprite("spike"),
    pos(0, -64),
    area({ scale: vec2(0.6, 1) }),
    anchor("bot"),
    rotate(180),
    offscreen({ hide: true }),
    danger({ tag: "player" }),
    ],
    "S": () => [ // pic vers la droite
    sprite("spike"),
    pos(-32, -32),
    area({ scale: vec2(0.6, 1) }),
    anchor("bot"),
    rotate(90),
    offscreen({ hide: true }),
    danger({ tag: "player" }),
    ],
    "Z": () => [ // pic vers la gauche
    sprite("spike"),
    pos(32, -32),
    area({ scale: vec2(0.6, 1) }),
    anchor("bot"),
    rotate(270),
    offscreen({ hide: true }),
    danger({ tag: "player" }),
    ],
    "#": () => [ // 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('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: `
    ===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: "alive",
on: true
}),