Creëer een vliegtuiggevechtspel in Corona Interface

Wat je gaat creëren

Invoering

In deze korte serie laat ik je zien hoe je een vliegtuiggevechtgame maakt die doet denken aan het oude arcadespel uit 1942. Onderweg leer je over Corona's storyboard-functionaliteit, timers, een personage verplaatsen en een beetje trigonometrie.

De afbeeldingen in deze tutorial zijn gemaakt door Ari Feldman en verstrekt onder de Common Public License, wat betekent dat ze gratis te gebruiken zijn. Zorg ervoor dat je de SpriteLib van Ari Feldman bekijkt. Laten we beginnen.

1. Nieuw project

Open de Corona Simulator en klik Nieuw project, en configureer het project zoals hieronder getoond. Selecteer een locatie om uw project op te slaan en klik op OK. Hiermee wordt een map gemaakt met een aantal pictogrammen en drie bestanden die voor ons belangrijk zijn, main.lua, config.lua, en build.settings. We zullen elk bestand in de volgende paar stappen bekijken.

2. Build.Settings

De build.settings bestand is verantwoordelijk voor de build time-eigenschappen van het project. Open dit bestand, verwijder de inhoud en vul het met het volgende codefragment.


instellingen = orientation = default = "portrait", supported = "portrait",,

In build.settings, we stellen de standaardoriëntatie in en beperken de applicatie om alleen een staande oriëntatie te ondersteunen. U kunt leren welke andere instellingen u kunt opnemen in build.settings door de Corona-documentatie te verkennen.

3. Config.lua

De config.lua bestand behandelt de configuratie van de toepassing. Zoals we deden met build.settings, Open dit bestand, verwijder de inhoud en voeg de volgende code toe.


toepassing = content = width = 768, height = 1024, scale = "letterbox", fps = 30,

Hiermee stelt u de standaardbreedte en hoogte van het scherm in brievenbus om de afbeeldingen te schalen en stelt de frames per seconde in 30.

U kunt leren welke andere eigenschappen u kunt instellen config.lua door de Corona-documentatie te bekijken.

4. Main.lua

De main.lua bestand is het bestand dat de toepassing als eerste laadt en gebruikt om de toepassing te booten. We zullen gebruiken main.lua om een ​​paar standaardinstellingen voor de toepassing en de storyboard module om het eerste scherm te laden.

Als je niet bekend bent met Corona's Storyboard-module, raad ik aan de documentatie snel te lezen. Kortom, Storyboard is de ingebouwde oplossing voor het maken en beheren van scènes ("schermen") in Corona. Deze bibliotheek biedt ontwikkelaars een eenvoudige manier om afzonderlijke scènes te maken en over te zetten.

5. Verberg statusbalk

We willen niet dat de statusbalk in onze applicatie wordt weergegeven. Voeg het volgende codefragment toe aan main.lua om de statusbalk te verbergen.


display.setStatusBar (display.HiddenStatusBar)

6. Stel standaard ankerpunten in

Om het standaard anker (registratiepunten) in te stellen, voegt u het volgende toe aan main.lua.

display.setDefault ("anchorX", 0) display.setDefault ("anchorY", 0)

De anchorX en anchorY eigenschappen geven aan waar u het registratiepunt van uw weergaveobjecten wilt hebben. Merk op dat de waarde varieert van 0.0 naar 1.0. Als u bijvoorbeeld wilt dat het registratiepunt het centrum van het weergaveobject is, stelt u beide eigenschappen in 0.5.

7. Zaad-willekeurige generator

In onze game worden Lua's gebruikt Math.random functie om willekeurige getallen te genereren. Om ervoor te zorgen dat de getallen echt willekeurig zijn telkens wanneer de toepassing wordt uitgevoerd, moet u een seed-waarde opgeven. Als u geen seed-waarde opgeeft, genereert de toepassing steeds dezelfde willekeurigheid.

Een goede zaadwaarde is Lua's os.time functie omdat het anders zal zijn elke keer dat de applicatie wordt uitgevoerd. Voeg het volgende codefragment toe aan main.lua.

math.randomseed (os.time ()) 

8. Storyboard vereisen

Voordat we de Storyboard-module kunnen gebruiken, moeten we deze eerst nodig hebben. Voeg het volgende toe aan main.lua.

lokaal storyboard = vereisen "storyboard"

9. Het startscherm laden

Voer het volgende codefragment in onder de regel waarin u de Storyboard-module nodig had.

storyboard.gotoScene ("start")

Hierdoor gaat de toepassing naar het gewenste scherm begin, wat ook een Lua-bestand is, start.lua. U hoeft de bestandsextensie niet toe te voegen wanneer u de gotoScene functie.

10. Startscherm

Maak een nieuw Lua-bestand met de naam start.lua in de hoofddirectory van het project. Dit zal een storyboard-bestand zijn, wat betekent dat we de Storyboard-module nodig hebben en een storyboardscene creëren. Voeg het volgende fragment toe aan start.lua.

lokaal storyboard = vereisen ("storyboard") lokale scène = storyboard.newScene ()
De oproep aan newScene merken start.lua onderdeel van het storyboard van de applicatie. Dit betekent dat het een scherm in het spel wordt, dat we storyboard-methoden kunnen noemen.

11. Lokale variabelen

We hebben slechts één lokale variabele nodig, startknop, in het grootste deel van start.lua. Deze lokale variabele wordt gebruikt om te verwijzen naar de startknop in deze scène.

lokale startknop 

Het is belangrijk om te begrijpen dat lokale variabelen in het hoofdgedeelte slechts eenmaal worden aangeroepen, wanneer de scène voor de eerste keer wordt geladen. Bij het navigeren door het storyboard, bijvoorbeeld door het aanroepen van methoden zoals gotoScence, de lokale variabelen worden al geïnitialiseerd.

Dit is belangrijk om te onthouden als u wilt dat de lokale variabelen opnieuw geïnitialiseerd worden wanneer u terugkeert naar een bepaalde scène. De eenvoudigste manier om dit te doen is om de scène uit het storyboard te verwijderen door de removeScence methode. De volgende keer dat u naar die scène navigeert, wordt deze automatisch opnieuw geladen. Dat is de aanpak die we zullen volgen in deze tutorial.

12. Storyboard-evenementen

Als je de tijd hebt genomen om de documentatie over storyboards te lezen die ik eerder heb gekoppeld, zul je gemerkt hebben dat de documentatie een sjabloon bevat met elk mogelijk storyboard-evenement. De opmerkingen zijn erg handig omdat ze aangeven welke gebeurtenissen moeten worden gebruikt voor het initialiseren van activa, timers, enzovoort.

De sjabloon lijkt in eerste instantie een beetje overweldigend. In deze zelfstudie zijn we echter alleen geïnteresseerd in drie evenementen, createSceneenterScene, en exitScene.

13. Maak scène

Voeg het volgende toe als fragment aan start.lua.

function scene: createScene (event) local group = self.view local background = display.newRect (0, 0, display.contentWidth, display.contentHeight) background: setFillColor (0, .39, .75) group: insert (background) local bigplane = display.newImage ("bigplane.png", 0,0) groep: insert (bigplane) startbutton = display.newImage ("startbutton.png", 264.670) groep: invoegen (startknop) einde

Deze methode wordt genoemd als de scène nog niet bestaat. Hier moet u de weergaveobjecten initialiseren en deze aan de scène toevoegen. De groep variabele wijst naar self.view, wat een is GroupObject voor de hele scène.

Vervolgens tekenen we een rechthoek voor de achtergrond. Corona's tonen object wordt geleverd met enkele tekenmethoden, zoals newCircle, nieuwe lijn, en, zoals getoond in het bovenstaande fragment, newRect. We roepen ook aan SetFillColor om de rechthoek een blauwachtige kleur te geven. De parameters die we doorgeven zijn percentages.

Vervolgens voegen we de achtergrond in de groep. Het is belangrijk om weergaveobjecten in de groep van de weergave in te voegen om ervoor te zorgen dat ze worden verwijderd wanneer de hoofdweergave wordt verwijderd. Maak tenslotte de startknop en voeg deze ook toe aan de groep. De tonen object heeft de nieuw beeld methode, die als parameters het pad naar de afbeelding en de X en Y waarden voor de positie van de afbeelding op het scherm.

14. Ga naar Scène

De enterScene methode wordt aangeroepen onmiddellijk nadat de scène op het scherm is verplaatst. Hier kunt u gebeurtenislisteners toevoegen, timers starten, audio laden, enz. Voeg het volgende fragment toe onder de code die u in de vorige stap hebt toegevoegd.


functiescène: enterScene (gebeurtenis) startknop: addEventListener ("tik", startGame) einde

In enterScene, we voegen een gebeurtenislistener toe aan de startknop, welke de start het spel functie wanneer de gebruiker op de startknop tikt.

15. Sluit Scene af

De exitScene methode wordt aangeroepen wanneer de scène op het punt staat buiten het scherm te bewegen. Dit is waar je naartoe wilt ongedaan maken wat je ook hebt ingesteld in de enterScene methode, zoals het verwijderen van gebeurtenislisteners, het stoppen van timers, het verwijderen van audio, enz. Voeg het volgende fragment toe onder de code die u in de vorige stap hebt toegevoegd.

functiescène: exitScene (gebeurtenis) startknop: removeEventListener ("tik", startGame) einde

Alles wat we doen in de exitScene methode is het verwijderen van de gebeurtenislistener die we hebben toegevoegd aan de startknop.

16. Start Game

De start het spel functie is eenvoudig. Het heeft het storyboard het laden gamelevel tafereel.

function startGame () storyboard.gotoScene ("gamelevel") einde

17. Luisteraars toevoegen aan scène

De createScene, enterScene, en exitScene methoden, we moeten de scène registreren om naar deze gebeurtenissen te luisteren. Voer het volgende codefragment in om dit te doen.

scène: addEventListener (scène "createScene", scène): addEventListener (scène "enterScene", scène): addEventListener ("exitScene", scène)

18. Breng de scène terug

Het laatste wat je moet doen in een storyboard is het terugkeren van de scène, omdat het een module is.

terugkeer scène

19. De scène GameLevel toevoegen

Voordat we onze voortgang kunnen testen, moeten we de gamelevel tafereel. Maak een nieuw Lua-bestand in de hoofddirectory van het project en noem het gamelevel.lua. Voeg het volgende codefragment toe aan het bestand dat u zojuist hebt gemaakt.

lokaal storyboard = vereisen ("storyboard") lokale scène = storyboard.newScene () teruggaande scène

Zoals we eerder zagen, hebben we eerst de storyboard-module nodig, maken we een nieuwe scène en geven we de scène terug. De gamelevel scene is de scène waarin we de gameplay van het spel zullen implementeren.

Conclusie

Dit brengt het eerste deel van deze serie tot een einde. In het volgende deel van deze serie zullen we de gameplay van de game gaan implementeren. Bedankt voor het lezen en ik zie je daar.