◉ VR-kurser
▶ Spela webbversionen

13. Vapen, magasin och ljud

Målet

Pistolen har åtta skott per magasin. Vi börjar med logiken, inte med en avancerad 3D-modell. Ett träffat monster använder samma skadelogik oavsett sort. Skottet använder en inspelad ljudeffekt. Öppna main.js och reglerna.

Tre värden som inte får blandas ihop

state.ammo är antalet skott kvar i det insatta magasinet. state.magazines är hela reservmagasin som kan användas senare. state.hasMagazine talar om ifall ett magasin alls sitter i pistolen. Vid start är det första magasinet insatt med åtta skott, men spelaren har inga reserver. Om du bara ändrar siffran på skärmen kommer skjutlogiken fortfarande använda det gamla värdet.

if (!state.hasMagazine || state.ammo <= 0) return;
state.ammo -= 1;
updateHud();

I den riktiga fire() finns också kontroll av om rundan pågår och en kort fördröjning mellan skott. Skottet skickar en stråle i siktriktningen. Väggar och stängda dörrar stoppar träffen före ett monster. Se kapitel 14 för hela kedjan.

Desktop

Quest

Ljud

Skottet är ett klipp från Gunshot Sounds, CC0. Bakgrundsslingan är Lost in a bad place, CC0. Monsterlätena skapas i Web Audio och panoreras åt den sida monstret finns; spelarens steg och hopp har enkla syntetiska ljud. SFX och Music går att slå av/på på startskärmen och är på som standard. Ljud spelas först efter en användarhandling enligt webbläsarens regler.

Testa

Skjut åtta gånger. Det nionde trycket ska inte avfyra något. Plocka upp ett magasin, ladda om och prova igen. Kontrollera att SFX av verkligen tystar skotten och att Music av stoppar musiken.

Gör själv

I din kopia: ändra RULES.magazineSize till 5 och testa om både startammunition och omladdning följer med. Om en UI-text fortfarande säger åtta är den hårdkodad och behöver uppdateras. Återställ sedan 8. Detta är ett bra exempel på varför regler bör ha en enda källa.