==== Arcade Volleyball ==== Cíl: s použitím knihovny [[https://brm.io/matter-js/|matter.js]] vytvoříme 2d hru, ve které si dva hráči pinkají s míčkem. Inspirací je prastará DOSová hra [[https://www.youtube.com/watch?v=n39SbydSPug|Arcade Volleyball (video)]]. * {{ :krouzek:matter2.zip |výchozí zdrojový kód}} (zip je nutné rozbalit) ===== Úkoly ===== === 1) Správně napojit ovládání druhého hráče. === Proměnné ''%%stisknutoVlevoB%%'', ''%%stisknutoVpravoB%%'', ''%%stisknutoNahoruB%%'' jsou už vytvořené a reagují na [[krouzek:auticko2|stisknutí kláves]]. To znamená, že se jejich hodnota změní z ''%%false%%'' na ''%%true%%'' ve chvíli kdy je klávesa stisknuta a změní se opačně, když je klávesa uvolněna. Postup je tedy zkopírovat to, jak je řešena reakce na tyto proměnné hráče A (úplně na konci kódu) a adaptovat aby se to týkalo hráče B. === 2) Klávesa nahoru výskok, ne let === Pokud se nemám od čeho odrazit, neměl bych vyskočit. Jedno z možných řešení je v reakci na ''%%stisknutoNahoruA%%'' použít funcki ''%%applyForce%%'' s vyšší hodnotou, ale podmínit tím, že jsme na zemi - tedy že naše y souřadnice je >499 === 3) Vytvořit strop nebo zvětšit stěny === Protože by míč mohl vyletět pryč :) === 4) Zlepšit fyziku === Experimentujeme s hodnotami ''%%restitution%%'' (odrazivost, mezi 0 a 1) a ''%%density%%'' (hustota -> hmotnost) var ball = Bodies.circle(400, 0, 40, { render: { fillStyle: '#999999' } }); Composite.add(engine.world, [ball]); Matter.Body.setDensity(ball, 0.0005) ball.restitution = 0.5 === 5) Detekce kolize === ----- Kód s 1-4: Hra