Hjem Personlig finansiering Sådan tilføjer du kollisioner til dit HTML5-spil - dummier

Sådan tilføjer du kollisioner til dit HTML5-spil - dummier

Indholdsfortegnelse:

Video: LIBGDX para Android - Tutorial 19 - Detectar Colisiones - How to make games Android 2024

Video: LIBGDX para Android - Tutorial 19 - Detectar Colisiones - How to make games Android 2024
Anonim

De mest interessante ting i HTML5 videospil sker, når sprites conk og kolliderer ind i hinanden. Spilmotorer har normalt en slags værktøj til at teste om to sprites er overlappende. Dette kaldes kollisionsdetektering , og det kan gøres på flere måder. Dette eksempel bruger standard afgrænsningsrektangel -skema. Det er ikke perfekt, men det er meget nemt at implementere og bliver almindeligt anvendt.

Sådan opsættes kollisionsrektangelkollisioner i dit spil

Tag et kig på colTest. html, og du får se et simpelt eksempel.

I colTest. html eksempel, brugeren flytter critter med musen, og du får en besked, når critter rører boksen midt på skærmen.

colTest. html checkCollisions (); kassen. opdatering (); critter. opdatering ();} // end opdatering; funktion checkCollisions () { hvis (boksen. CollidesWith (critter)) { output. innerHTML = "Kollision"; } ellers { output. innerHTML = "Ingen kollision"; } // ende hvis } // end checkCollisions empty

Der sker en række interessante ting i denne kode:

  1. Skjul den normale musemarkør.

    Når du skal have noget andet objekt, følg musen, vil du normalt skjule den normale pilmarkør. I simpleGame, brug spillet. hideCursor () metode til at skjule musemarkøren inde i spilskærmen.

  2. Opret mere end et sprite.

    Det tager to til tango eller kolliderer. I dette eksempel forbliver boksen stationær og en critter, der følger musen.

  3. Giv critter en followMouse () metode.

    I dette eksempel har du den critter, der følger musen. Begynd med at oprette en followMouse () metode.

  4. Bestem musens position.

    Muspositionen bestemmes (i simpleGame. Js) med dokumentet. mouseX og dokument. mouseY egenskaber.

  5. Kopier musepositionen til critter-positionen.

    Brug musens x-position til at indstille critters x-position og gentag med y.

  6. Ring til critters followMouse () metode hver ramme.

    Som normalt er opdateringen () -funktionen, hvor du lægger kode, der skal ske gentagne gange.

Hvis du leger med colTest. html side, vil du sikkert bemærke, at kollisionerne ikke er nøjagtige. Det er muligt at få et kollisionsregister, selvom critter ikke rent faktisk rører ved kassen. Dette er vigtigt, fordi simpleGame bruger et program kaldet grænsekassakollisioner .

Dette betyder, at du faktisk ikke kontrollerer for at se, om billederne kolliderer, men om rektanglerne omkring billederne kolliderer. I dette eksempel er forskellen mindre, men du vil undertiden se betydelige fejl med denne mekanisme, især med elementer, der er lange og tynde. Når et sprite roterer, kan størrelsen af ​​det afgrænsende rektangel ændres.

Afstandsbaserede kollisioner til dit spil

En alternativ form for kollisionsdetektion kaldet grænsekreds kollisioner er tilgængelig. Med denne mekanisme beregner du blot afstanden mellem midten af ​​to sprites, og hvis den værdi er mindre end en tærskel, anser du det for en kollision. Denne tilgang har to fordele:

  • Kollisionsafstanden er konstant. Afstanden mellem billedcentre ændres ikke, når billederne roteres, selvom billederne ændrer størrelse.

  • Kollisionstærsklen kan varieres. Du kan indstille enhver følsomhed, du vil have. Indstil en stor kollisionsradius for nemme kollisioner og en mindre, når du vil have kollisioner, der kun udløses, når sprites er meget tæt på hinanden.

Sprogobjektet simpleGame Library Sprite har en distanceTo () metode, som beregner afstanden fra et sprite til en anden. Du kan se et eksempel på denne kode i afstanden. html eksempel:

afstand. html var spil; var box; var critter; var output; funktion init () {game = new Scene (); spil. hideCursor (); boks = nyt Sprite (spil, "simpleBox. png", 50, 50); critter = ny Sprite (spil, "critter.gif", 50, 50); output = dokument. getElementById ("output"); // giv boksen fast position boks. setPosition (200, 150); boks. setSpeed ​​(0); critter. setPosition (100, 100); critter. setSpeed ​​(0); // critter kontrolleret af mus critter. followMouse = funktion () {this. setX (dokument. mouseX); det her. setY (dokument. mouseY);} // end followMouse spil. start ();} // end init funktion opdatering () {game. klar(); critter. followMouse (); checkDistance (); kassen. opdatering (); critter. opdatering ();} // end opdatering; funktionskontrolafstand () { dist = boks. distanceto (critter); hvis (dist <50) { output. innerHTML = "Kollision:" + dist; } ellers { output. innerHTML = "Ingen kollision:" + dist; } // ende hvis } // ende checkDistance tom

Den afstandsbaserede kollisionsmetode ligner meget på grænseværdierne. Opret en checkDistance () funktion, der vil fungere ligesom de gamle checkCollisions (). Her er trinene for hvad der sker i checkDistance:

  1. Find afstanden mellem de to sprites.

    Brug spritens distanceTo () metode til at bestemme afstanden mellem de to sprites.

  2. Hvis afstanden er mindre end en tærskel, tæller den som kollision.

    Generelt skal du bruge bredden på den mindre sprite som udgangspunkt for en kollisionstærskel, men du kan justere dette for at gøre kollisioner mere eller mindre sandsynlige.

  3. Rapporter kollisionsstatus.

    I dette eksempel skal du blot udskrive "kollision" eller "ingen kollision", men i et rigtigt spil kollisioner udløser andre handlinger: øge score, reducere antallet af liv, ændre hastigheden eller positionen af ​​de kolliderede elementer, eller hvad som helst. (Forhåbentlig involverer det eksplosioner.)

Sådan tilføjer du kollisioner til dit HTML5-spil - dummier

Valg af editor

Hvornår man bruger If-erklæringen til at programmere HTML med JavaScript-dummier

Hvornår man bruger If-erklæringen til at programmere HTML med JavaScript-dummier

Kan virkelig ikke undslippe ved hjælp af if-sætningen med JavaScript. If-erklæringen bruges almindeligvis til at teste om der er sket noget eller ikke, om dataene er inden for rækkevidde eller ej, eller om brugeren ønsker at udføre en bestemt opgave. Sådan oprettes en simpel hvis erklæring i JavaScript En af de mest ...

Før du opretter din første webside - dummier

Før du opretter din første webside - dummier

Oprettelse af HTML-dokumenter adskiller sig fra at skabe tekstbehandlingsdokumenter ved hjælp af en applikation som Microsoft Word. Forskellen kommer fra at bruge to applikationer med oprettelse af HTML-dokument: Din tekst eller HTML-editor, hvor du opretter websider Din webbrowser, hvor du ser resultaterne Selvom mange HTML-redaktører, som f.eks.

Kode Filer til HTML5 og CSS3 - dummies

Kode Filer til HTML5 og CSS3 - dummies

HTML og CSS er de grundlæggende byggesten på websites. Adventen af ​​HTML5 og CSS3 repræsenterer et dynamisk og kraftfuldt evolutionært stadium i udviklingen af ​​webdesign. Maksimering af potentialet i HTML5 og CSS3 gør det muligt at anvende styling og formatering, præsentere lyd og video og skabe animation og interaktivitet på måder ...

Valg af editor

Information Der er en kommandoudgang på basis af en Vis Interface Command i Junos - dummies

Information Der er en kommandoudgang på basis af en Vis Interface Command i Junos - dummies

. Lidt information. Udover de grundlæggende op- eller nedstatusoplysninger indeholder kommandoen Vis grænseflader disse velsmagende informative nuggets: CoS køer: Dette er det samlede antal CoS-køer konfigureret til det pågældende interfacekort. Hvis du har konfigureret otte køer, viser den en værdi ...

Sådan ses Junos Syslog Messages - dummies

Sådan ses Junos Syslog Messages - dummies

I standard syslog-konfigurationen på Junos router, gemmes logfiler til en fil kaldet meddelelser, som ligger i standard logfil-mappen. På M-, MX- og T-seriens routere er standardlogfilmappen / var / log /. På J-seriens routere er det / cf / var / log /. Du kan se filen fra enheden med denne kommando: ...

Eneband Dokumenter til at hjælpe med at planlægge og implementere dit netværk - dummier

Eneband Dokumenter til at hjælpe med at planlægge og implementere dit netværk - dummier

Når det er tid til at deployere dine Junos baserede enheder, kan du måske vide, hvilke ressourcer og værktøjer der er tilgængelige for at lette din migration. Heldigvis har du som kunde hos Juniper Networks adgang til forskellige dokumenter, der kan hjælpe dig med at planlægge og implementere dit nye netværk: Eksempler på netværkskonfiguration: Giv komplekse eksempler på flere platformskonfigurationer ...

Valg af editor

Office 2010 Alt-i-One til Dummies Cheat Sheet - dummies

Office 2010 Alt-i-One til Dummies Cheat Sheet - dummies

Programmerne i Office 2010 suite - Word 2010, Excel 2010, PowerPoint 2010, Outlook 2010, Adgang 2010 og Publisher 2010 - har meget til fælles. Master kommandoerne i et Office 2010-program, og du er godt på vej til at mestre de andre programmer. Følgende er vigtige oplysninger, du kan tage til enhver ...

Office 365 For Dummies Cheat Sheet - dummies

Office 365 For Dummies Cheat Sheet - dummies

Som med enhver virksomheds software omfatter mange forskellige dele og stykker den simple navnet på Office 365. At få et håndtag på alle de bevægelige stykker og jargon kan være en udfordrende opgave. Denne vejledning giver dig en hurtig reference til de produkter, teknologier, koncepter og akronymer, der udgør Office 365-landskabet.

Office 365 Grupper - dummies

Office 365 Grupper - dummies

Du kan bruge Office 365 Grupper, eller blot Grupper, til hurtigt at binde sammen med kolleger til samarbejde uden administrationsansvar, der følger med et SharePoint-websted. Grupper er ikke en del af SharePoint Online. Det er faktisk en funktion i Exchange Online, men det bruger SharePoint Online-funktioner, såsom OneDrive for Business til lagring af gruppefiler ...