==== 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