Huis Persoonlijke financiën Hoe u botsingen kunt toevoegen aan uw HTML5-spel - dummies

Hoe u botsingen kunt toevoegen aan uw HTML5-spel - dummies

Inhoudsopgave:

Video: Dutch - Hour of Code - Make a 3D game with AgentCubesonline 2024

Video: Dutch - Hour of Code - Make a 3D game with AgentCubesonline 2024
Anonim

De meest interessante dingen in HTML5-videogames doen zich voor wanneer sprites conk en tegen elkaar botsen. Game-engines hebben normaal gesproken een soort tool om te testen of twee sprites elkaar overlappen. Dit wordt botsdetectie genoemd en het kan op verschillende manieren worden gedaan. In dit voorbeeld wordt het standaard begrenzende rechthoek -schema gebruikt. Het is niet perfect, maar het is heel gemakkelijk te implementeren en wordt veel gebruikt.

Begrensde rechthoeken in je spel instellen

Bekijk colTest. html en je ziet een eenvoudig voorbeeld.

In de colTest. HTML-voorbeeld, de gebruiker verplaatst het critter met de muis en je krijgt een bericht wanneer het critter de doos in het midden van het scherm aanraakt.

colTest. html checkCollisions (); box. bijwerken(); critter. update ();} // einde update; function checkCollisions () { if (box. Collides With (critter)) { uitvoer. innerHTML = "Botsing"; } else { uitvoer. innerHTML = "Geen botsing"; } // end if } // end checkCollisions empty

Een aantal interessante dingen gebeuren in deze code:

  1. Verberg de normale muiscursor.

    Volg de muis wanneer u een ander object wilt hebben. U wilt normaal gesproken de normale pijlcursor verbergen. Gebruik de game in simpleGame. hideCursor () methode om de muiscursor in het spelscherm te verbergen.

  2. Meer dan één sprite maken.

    Het duurt twee tot de tango, of botsen. In dit voorbeeld blijft het kader stationair en volgt een critter die de muis volgt.

  3. Geef het critter een methode followMouse ().

    In dit voorbeeld laat je het critter volgen met de muis. Begin met het maken van een methode followMouse ().

  4. Bepaal de positie van de muis.

    De positie van de muis wordt bepaald (in simpleGame. Js) bij het document. mouseX en document. mouseY eigenschappen.

  5. Kopieer de muispositie naar de critter-positie.

    Gebruik de x-positie van de muis om de x-positie van de critter in te stellen en herhaal met y.

  6. Roep de methode followMouse () van de critter elk frame op.

    Zoals gewoonlijk bevat de update () -functie de code die herhaaldelijk zou moeten voorkomen.

Als je met de colTest speelt. html-pagina, zult u waarschijnlijk merken dat de botsingen niet exact zijn. Het is mogelijk om een ​​collision register te hebben, zelfs wanneer het critter de box niet echt aanraakt. Dit is belangrijk omdat simpleGame een schema gebruikt met de naam begrenzende doosbotsingen .

Dit betekent dat je niet echt controleert of de afbeeldingen botsen, maar of de rechthoeken rond de afbeeldingen botsen. In dit voorbeeld is het verschil klein, maar soms ziet u significante fouten met dit mechanisme, vooral met elementen die lang en dun zijn. Als een sprite roteert, kan de grootte van de grensrechthoek veranderen.

Op afstand gebaseerde botsingen voor uw game

Een alternatieve vorm van collision detection, grenscirkel botsingen, is beschikbaar. Met dit mechanisme berekent u eenvoudig de afstand tussen het midden van twee sprites en als die waarde kleiner is dan een bepaalde drempel, beschouwt u dit als een botsing. Deze aanpak heeft twee voordelen:

  • De aanvaringsafstand is constant. De afstand tussen de beeldcentra verandert niet wanneer afbeeldingen worden geroteerd, zelfs als de afbeeldingen van grootte veranderen.

  • De collisiedrempel kan worden gevarieerd. U kunt elke gewenste gevoeligheid instellen. Stel een grote botsradius in voor eenvoudige botsingen en een kleinere botsing wanneer u wilt dat botsingen alleen worden geactiveerd als de sprites zich zeer dicht bij elkaar bevinden.

Het object Sprite in de simpleGame-bibliotheek heeft een distanceTo () -methode, die de afstand van de ene naar de andere sprite berekent. U kunt een voorbeeld van deze code in de verte zien. html-voorbeeld:

afstand. html var-spel; var box; var critter; var-uitvoer; function init () {game = new Scene (); spel. hideCursor (); box = nieuwe Sprite (spel, "simpleBox. png", 50, 50); critter = nieuwe Sprite (spel, "critter. gif", 50, 50); output = document. getElementById ("output"); // doos met vaste positie geven. setPosition (200, 150); doos. setSpeed ​​(0); critter. setPosition (100, 100); critter. setSpeed ​​(0); // critter gecontroleerd door muis critter. followMouse = function () {this. setX (document. mouseX); deze. setY (document. mouseY);} // einde followMouse-spel. start ();} // update van de eind-init-functie () {game. duidelijk(); critter. followMouse (); checkDistance (); box. bijwerken(); critter. update ();} // einde update; function checkDistance () { dist = box. distanceto (critter); uitvoer (dist <50) {. innerHTML = "Botsing:" + dist; } else { uitvoer. innerHTML = "Geen botsing:" + dist; } // end if } // end checkDistance empty

De distance-based collision-methode lijkt veel op de bounding-rechthoek-versie. Maak een functie checkDistance () die net zo zal werken als de oude checkCollisions (). Dit zijn de stappen voor wat er gebeurt in checkDistance:

  1. Zoek de afstand tussen de twee sprites.

    Gebruik de methode distanceTo () van de sprite om de afstand tussen de twee sprites te bepalen.

  2. Als de afstand kleiner is dan een bepaalde drempel, telt u deze als een botsing.

    Over het algemeen moet u de breedte van de kleinere sprite gebruiken als startpunt voor een collisiedrempel, maar u kunt dit aanpassen om botsingen meer of minder waarschijnlijk te maken.

  3. Rapporteer de aanvaringsstatus.

    In dit voorbeeld drukt u eenvoudig "botsing" of "geen botsing" af, maar in een echt spel zijn botsingen triggers voor andere acties: het verhogen van de score, het verminderen van het aantal levens, het wijzigen van de snelheid of de positie van de botsende elementen, of wat dan ook. (Hopelijk gaat het om explosies.)

Hoe u botsingen kunt toevoegen aan uw HTML5-spel - dummies

Bewerkers keuze

Kennis van auditplanning nodig voor de AUD-test - dummies

Kennis van auditplanning nodig voor de AUD-test - dummies

Bij het nemen van de audit en het attest ( AUD) test op het CPA-examen, moet u blijk geven van kennis van het auditplanningsproces. Bij het plannen van een audit moet een auditor overwegen of bepaalde randvoorwaarden aanwezig zijn. Deze voorwaarden stellen de CPA-firma in staat om efficiënt een audit uit te voeren en de auditor te helpen bij het verkrijgen van voldoende ...

Passiva op de FAR-test van het CPA-examen - dummies

Passiva op de FAR-test van het CPA-examen - dummies

De financiële boekhouding en rapportage (FAR ) test van het CPA-onderzoek test u uw kennis van verschillende soorten verplichtingen inclusief opgebouwde verplichtingen, langlopende schulden, uitgestelde belastingen en pensioenverplichtingen. Lopende verplichtingen De periodetoerekeningsbasis boekt opbrengsten wanneer deze worden verdiend en neemt uitgaven op wanneer deze zijn gemaakt. De transactiebasis is niet afhankelijk van gelddeposito's ...

Regeling oefenvragen voor het CPA-examen - dummies

Regeling oefenvragen voor het CPA-examen - dummies

De verordening (REG) -test op het CPA-examen richt zich op op twee terreinen: ondernemingsrecht en belastingen. Overweeg flashcards te gebruiken om termen voor de REG-sectie te leren en te onthouden. Voordat u deze test uitvoert, moet u vele definities, feiten en cijfers verteren en flashcards kunnen een grote hulp zijn. Welke van de volgende ...

Bewerkers keuze

Met de AF-ON-knop op uw EOS 80D - dummies

Met de AF-ON-knop op uw EOS 80D - dummies

Als u nerveus bent over de ontspanknop tot halverwege op uw EOS 80D drukken, uit angst dat u per ongeluk een foto maakt, wilt u misschien kennis maken met de AF-ON-knop. In de geavanceerde belichtingsstanden (P, Tv, Av, M, B, C1 en C2), kun je deze knop ingedrukt houden om hetzelfde doel te bereiken als ...

Hoe je de opname maakt met de sfeer op je Canon EOS 80D - dummies

Hoe je de opname maakt met de sfeer op je Canon EOS 80D - dummies

Met je EOS 80D kun je een beetje spelen met kleur, scherpte, contrast en belichting in bepaalde scènemodi. De modus Shoot by Ambience kan leuk zijn voor een beetje experiment. Met de Picture Style-functie kunt u kiezen hoe de camera uw originele beeldgegevens "verwerkt" wanneer u een van de JPEG-afbeeldingen gebruikt ...

Hoe je de opname-informatieweergavemodus op je Canon EOS 80D gebruikt - dummies

Hoe je de opname-informatieweergavemodus op je Canon EOS 80D gebruikt - dummies

In de weergavemodus Opnamegegevens op uw EOS 80D wordt een miniatuur van uw afbeelding weergegeven, samen met scads aan opnamegegevens. Je ziet ook een helderheidshistogram - het grafiekachtige ding in de rechterbovenhoek van het scherm. (Denk eraan, druk gewoon op de Info-knop om door de weergavemodi te bladeren om deze te zien.) Hoe ...

Bewerkers keuze

Hoe Excel 2016-werkmappen te delen via OneDrive - dummies

Hoe Excel 2016-werkmappen te delen via OneDrive - dummies

Voordat u uw Excel 2016-werkmap kunt delen, moet een kopie ervan opslaan in een map op uw OneDrive. De eenvoudigste manier om dit te doen is om eerst de werkmap te openen om te delen in Excel en klik op de knop Delen die aan de rechterkant van het lint verschijnt. Excel opent vervolgens een ...

Hoe werkbladen delen in Excel 2013 - dummies

Hoe werkbladen delen in Excel 2013 - dummies

Excel 2013 maakt het gemakkelijk om uw spreadsheets te delen met vertrouwde klanten en collega's. U kunt de opties op het scherm Delen in de weergave Backstage gebruiken om werkbladen per e-mail te verzenden of per chatbericht te verzenden naar anderen die toegang hebben tot Excel. Als Microsoft Lync online vergaderingssoftware op uw apparaat is geïnstalleerd, maakt u ...

Hoe een werkblad in Windows te splitsen in Excel 2016 - dummies

Hoe een werkblad in Windows te splitsen in Excel 2016 - dummies

Hoewel in en uit zoomen op een Excel 2016-werkblad kan je helpen om je te oriënteren, het kan niet twee afzonderlijke secties samenbrengen zodat je hun gegevens op het scherm kunt vergelijken (in ieder geval niet op een normale grootte waar je de informatie daadwerkelijk kunt lezen). Om dit soort truc te beheren, splitst u de ...