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 2025

Video: LIBGDX para Android - Tutorial 19 - Detectar Colisiones - How to make games Android 2025
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

Husk Hvad du læser - dummier

Husk Hvad du læser - dummier

Læsning er et stort problem i uddannelsesmæssige cirkler. At have evnen til at læse en sætning, udtale alle ordene flydende og have et ordforråd bredt nok, der ikke nødvendiggør at henvise til en ordbog er en ting. Men at have evnen til at huske, hvad du læser, er noget helt andet. Hvis du ikke kan huske hvad ...

10 Personer med høj selvværd - dummier

10 Personer med høj selvværd - dummier

Mennesker med en stærk følelse af selv- værd at udvise en række egenskaber. Når du ser disse egenskaber reflekteret i dig selv og dine handlinger, vil du vide, at du er ankommet: De sætter pris på sig selv og andre mennesker. De nyder at vokse som en person og finde opfyldelse og mening i deres liv. De kan grave dybt ind i sig selv.

Videnskabelig dokumentation for brug af mindfulness til depression - dummies

Videnskabelig dokumentation for brug af mindfulness til depression - dummies

Mindfulness er nu en evidensbaseret teknik, der anvendes bredt til depression af NHS (Storbritanniens gratis offentlige nationale sundhedsvæsen). Det er også godkendt af NICE eller National Institute for Health and Care Excellence som en godkendt terapi til forebyggelse af tilbagefald af depression. Der er talrige kliniske undersøgelser, der viser effektiviteten ...

Valg af editor

Hvad er kravene til Cloud Integration? - dummies

Hvad er kravene til Cloud Integration? - dummies

Mange virksomheder vurderer i første omgang udfordringerne ved at integrere data på tværs af hybrid computermiljøer. De fleste integrationsproblemer mellem offentlige og private skyer vil fokusere på SaaS (Software as a Service) applikationer. Dette kan være en ny oplevelse for mange it-organisationer, der er vant til at kontrollere de datakilder, de integrerer. De antager ...

Hvad er platform som en service (PaaS) i Cloud Computing? - dummies

Hvad er platform som en service (PaaS) i Cloud Computing? - dummies

Platformen som en Service (PaaS) er et abstrakt og integreret cloudbaseret computermiljø, som understøtter udvikling, drift og administration af applikationer. Applikationskomponenter kan eksistere i et skymiljø eller kan integreres med applikationer, der administreres i private skyer eller i datacentre. En primær værdi af et PaaS-miljø er, at udviklere ikke har ...

Hvad er software som en service (SaaS) i Cloud Computing? - dummies

Hvad er software som en service (SaaS) i Cloud Computing? - dummies

Virksomheder har opdaget, at nogle organisatoriske og økonomiske fordele kan realiseres ved at bruge software som en service (SaaS) applikationer i cloud computing. De giver mulighed for at få en tredjepartsorganisation til at håndtere alle de detaljer, der går ud på at holde komplekse applikationer i gang. SaaS er ikke et selvstændigt miljø. I stedet er disse applikationer og tjenester ...

Valg af editor

Hvordan tastetryk logging kan bruges til at hak adgangskoder - dummies

Hvordan tastetryk logging kan bruges til at hak adgangskoder - dummies

En af ​​de bedste teknikker til at fange adgangskoder er ekstern tastetryk logning - brugen af ​​software eller hardware til at optage tastetryk som de er skrevet til computeren. Interessant teknik, men det virker. Vær forsigtig med tastetryk logning. Selv med gode hensigter rejser overvågning medarbejdere forskellige juridiske spørgsmål, hvis det ikke gøres korrekt. Diskuter med ...

Sådan får du adgang til en netværksprinter ved hjælp af et webinterface - dummier

Sådan får du adgang til en netværksprinter ved hjælp af et webinterface - dummier

Printere med direkte netværk Forbindelsen omfatter ofte en indbygget webserver, som giver dig mulighed for at styre printeren fra enhver browser på netværket. Følgende billede viser hjemmesiden for en HP LaserJet 400 M401dne printer. Denne webgrænseflade giver dig mulighed for at se statusoplysninger om printeren og kontrollere printerens konfiguration. ...

Sådan tilføjes en netværksprinter - dummier

Sådan tilføjes en netværksprinter - dummier

, Før du kan udskrive til en netværksprinter, skal du konfigurere din computer for at få adgang til den netværksprinter, du vil bruge. Fra Start-menuen skal du åbne Kontrolpanel og derefter dobbeltklikke på ikonet Printere. Hvis din computer allerede er konfigureret til at arbejde sammen med en netværksprinter, er et ikon for netværket ...