Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze | ||
| krouzek:arcade_volleyball [2021/06/23 14:39] – admin | krouzek:arcade_volleyball [2023/11/15 20:54] (aktuální) – upraveno mimo DokuWiki 127.0.0.1 | ||
|---|---|---|---|
| Řádek 9: | Řádek 9: | ||
| 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. | 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) Zlepšit fyziku === | + | === 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 '' | ||
| + | |||
| + | === 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 '' | Experimentujeme s hodnotami '' | ||
| < | < | ||
| var ball = Bodies.circle(400, | var ball = Bodies.circle(400, | ||
| Composite.add(engine.world, | Composite.add(engine.world, | ||
| - | | + | |
| - | ball.density | + | ball.restitution |
| </ | </ | ||
| - | === 3) 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 '' | ||
| - | === 4) Detekce kolize === | + | === 5) Detekce kolize === |
| + | |||
| + | |||
| + | |||
| + | ----- | ||
| + | Kód s 1-4: | ||
| + | |||
| + | <code html> | ||
| + | < | ||
| + | <html lang=" | ||
| + | |||
| + | < | ||
| + | <meta charset=" | ||
| + | < | ||
| + | |||
| + | < | ||
| + | |||
| + | </ | ||
| + | |||
| + | <script src=" | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | /* < | ||
| + | |||
| + | // z https:// | ||
| + | // (modifikovano) | ||
| + | |||
| + | // module aliases | ||
| + | var Engine = Matter.Engine, | ||
| + | Render = Matter.Render, | ||
| + | Runner = Matter.Runner, | ||
| + | Bodies = Matter.Bodies, | ||
| + | Composite = Matter.Composite; | ||
| + | |||
| + | // create an engine | ||
| + | var engine = Engine.create(); | ||
| + | |||
| + | // create a renderer | ||
| + | var render = Render.create({ | ||
| + | element: document.body, | ||
| + | engine: engine, | ||
| + | options: { | ||
| + | background: '# | ||
| + | wireframes: false | ||
| + | } | ||
| + | }); | ||
| + | |||
| + | // Dva hraci | ||
| + | var playerA = Bodies.circle(200, | ||
| + | var playerB = Bodies.circle(600, | ||
| + | Composite.add(engine.world, | ||
| + | |||
| + | // Zeme | ||
| + | var ground = Bodies.rectangle(400, | ||
| + | Composite.add(engine.world, | ||
| + | // Strop | ||
| + | var ceil = Bodies.rectangle(400, | ||
| + | Composite.add(engine.world, | ||
| + | |||
| + | // Zdi vlevo a vpravo | ||
| + | var wallA = Bodies.rectangle(0, | ||
| + | var wallB = Bodies.rectangle(800, | ||
| + | Composite.add(engine.world, | ||
| + | |||
| + | // Sit | ||
| + | var net = Bodies.rectangle(400, | ||
| + | Composite.add(engine.world, | ||
| + | |||
| + | |||
| + | var ball = Bodies.circle(400, | ||
| + | Matter.Body.setDensity(ball, | ||
| + | ball.restitution = 0.5 | ||
| + | Composite.add(engine.world, | ||
| + | |||
| + | // run the renderer | ||
| + | Render.run(render); | ||
| + | |||
| + | // create runner | ||
| + | var runner = Runner.create(); | ||
| + | |||
| + | // run the engine | ||
| + | Runner.run(runner, | ||
| + | |||
| + | /* Klavesy */ | ||
| + | stisknutoVlevoA = false | ||
| + | stisknutoVpravoA = false | ||
| + | stisknutoNahoruA = false | ||
| + | stisknutoVlevoB = false | ||
| + | stisknutoVpravoB = false | ||
| + | stisknutoNahoruB = false | ||
| + | |||
| + | document.onkeydown = function (event) { | ||
| + | if (event.keyCode == 65) { // A | ||
| + | stisknutoVlevoA = true | ||
| + | } else if (event.keyCode == 87) { // W | ||
| + | stisknutoNahoruA = true | ||
| + | } else if (event.keyCode == 68) { // D | ||
| + | stisknutoVpravoA = true | ||
| + | } else if (event.keyCode == 37) { // sipka vlevo | ||
| + | stisknutoVlevoB = true | ||
| + | |||
| + | } else if (event.keyCode == 39) { // sipka vpravo | ||
| + | stisknutoVpravoB = true | ||
| + | } else if (event.keyCode == 38) { // sipka nahoru | ||
| + | stisknutoNahoruB = true | ||
| + | } | ||
| + | } | ||
| + | |||
| + | document.onkeyup = function (event) { | ||
| + | if (event.keyCode == 65) { // A | ||
| + | stisknutoVlevoA = false | ||
| + | } else if (event.keyCode == 87) { // W | ||
| + | stisknutoNahoruA = false | ||
| + | } else if (event.keyCode == 68) { // D | ||
| + | stisknutoVpravoA = false | ||
| + | } else if (event.keyCode == 37) { // sipka vlevo | ||
| + | stisknutoVlevoB = false | ||
| + | |||
| + | } else if (event.keyCode == 39) { // sipka vpravo | ||
| + | stisknutoVpravoB = false | ||
| + | } else if (event.keyCode == 38) { // sipka nahoru | ||
| + | stisknutoNahoruB = false | ||
| + | } | ||
| + | } | ||
| + | |||
| + | setInterval(function () { | ||
| + | if (stisknutoVlevoA) { | ||
| + | Matter.Body.applyForce(playerA, | ||
| + | } | ||
| + | if (stisknutoVpravoA) { | ||
| + | Matter.Body.applyForce(playerA, | ||
| + | } | ||
| + | if (stisknutoNahoruA) { | ||
| + | if(playerA.position.y > 499){ | ||
| + | Matter.Body.applyForce(playerA, | ||
| + | } | ||
| + | } | ||
| + | if (stisknutoVlevoB) { | ||
| + | Matter.Body.applyForce(playerB, | ||
| + | } | ||
| + | if (stisknutoVpravoB) { | ||
| + | Matter.Body.applyForce(playerB, | ||
| + | } | ||
| + | if (stisknutoNahoruB) { | ||
| + | if(playerB.position.y > 499){ | ||
| + | Matter.Body.applyForce(playerB, | ||
| + | } | ||
| + | } | ||
| + | |||
| + | }, 30) | ||
| + | |||
| + | /* ]]> */ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | </ | ||