Lag iOS-apper ved å bruke Xcode 5s SpriteKit-spillmal

Å utvikle et spill for Apple mobile enheter kan være like morsomt og utfordrende som å spille spillet. Den siste iterasjonen av Xcode inkluderer en oppdatert SpriteKit for spillutviklere. I tillegg inkluderer Xcode 5 en ny SpriteKit Game-prosjektmal ( figur A ) som kommer med begynnelsen på et 2D arkadestil-spill.

Figur A

Når et prosjekt opprettes ved hjelp av SpriteKit-spillmalen, blir SpriteKit-rammeverket automatisk lagt til. To ekstra filer er lagt til for å hjelpe deg med å begynne å lage din første scene (MyScene.h og MyScene.m). I et typisk SpriteKit-basert spill blir sceneobjekter opprettet og brukt til å organisere og kontrollere segmenter av spillet. SKScene-klassen representerer innholdet i en scene, og inkluderer en mengde egenskaper og metoder for å kontrollere objektene som er inne i scenen.

Lage ditt første SpriteKit-spill

Bruk Xcode 5, opprett et nytt prosjekt og velg SpriteKit-malen (figur A). Prosjektnavigatorruten viser alle de vanlige filene og rammene for et enkeltvisningsapplikasjon, pluss et sett med sceneklassefiler ( figur B ). Du kan legge merke til en spesiell klasse for gjengivelse av en scene. SKView-klassen er en visning som er ansvarlig for å vise SpriteKit-innhold. Koden generert av prosjektmal for initialisering av SKView vises i viewDidLoad-metoden (liste 1.1).

 - (void) viewDidLoad {super viewDidLoad; // Konfigurer visningen. SKView * skView = (SKView *) self.view; skView.showsFPS = JA; skView.showsNodeCount = YES; // Opprett og konfigurer scenen. SKScene * scene = MyScene sceneWithSize: skView.bounds.size; scene.scaleMode = SKSceneScaleModeAspectFill; // Presentere scenen. skView presentScene: scene; } 
Oppføring 1.1

SpriteKit-visningen initialiseres, etterfulgt av initialisering av den tilsvarende scenen umiddelbart; scenen refererer til MyScene-klassen opprettet av prosjektmalen. Du gjengir og viser scenen ved å kalle presentScene SKView-metoden. Motsatt pauser du en scene ved å sette SKViews pausede egenskap til YES.

Figur B

Det er tre egenskaper som kan settes og brukes for feilsøking: showsFPS, showsDrawCount og showsNodeCount. Alle tre egenskapene viser forskjellige informasjonsstykker på toppen av scenen - innenfor SKView. ShowFPS-egenskapen viser for eksempel gjeldende bildefrekvens for den aktive scenen som rammer per sekund.

Å bygge en scene

Scener er SKScene-objekter gjengitt av et SKView-objekt. Scenens innhold er organisert som et tre av nodeobjekter. Prosjektet som ble opprettet ved å bruke SpriteKit-malen inkluderer filene i sceneklassen, MyScene.m og MyScene.h. Malprosjektet er designet for å gi et grunnleggende grunnlag for å bygge et spill fra. Prosjektet vil sammenstille og vise scenen som er kontrollert av MyScene-klassen. Scenen initialiseres ved å kalle initWithSize-metoden (liste 1.2).

 - (id) initWithSize: (CGSize) størrelse {if (self = super initWithSize: size) {/ * Konfigurer scenen din her * / self.backgroundColor = SKColor colorWithRed: 0.15 green: 0.15 blue: 0.3 alpha: 1.0 ; SKLabelNode * myLabel = SKLabelNode labelNodeWithFontNamed: @ "Chalkduster"; myLabel.text = @ "Hallo, verden!"; myLabel.fontSize = 30; myLabel.position = CGPointMake (CGRectGetMidX (self.frame), CGRectGetMidY (self.frame)); self addChild: myLabel; } return self; } 
Oppføring 1.2

Ikke alle typer SpriteKit-noder trekker innhold. SKLabelNode i liste 1.2 vil gjengi teksten definert av myLabel.text-egenskapen. En SKSpriteNode-klasse tegner en sprite. I SpriteKit-malprosjektet opprettes en sprite hver gang skjermen berøres. For å oppnå dette er SKSpriteNode og eventuelle SKActions inneholdt touchesBegan-metoden (liste 1.3).

 - (void) touchesBegan: (NSSet *) berører withEvent: (UIEvent *) hendelse {for (UITouch * touch in berører) {CGPoint location = touch locationInNode: self; SKSpriteNode * sprite = SKSpriteNode spriteNodeWithImageNamed: @ "Spaceship"; sprite.position = beliggenhet; SKAction * action = SKAction rotateByAngle: M_PI varighet: 1; sprite runAction: SKAction repeatActionForever: action; self addChild: sprite; }} 
Oppføring 1.3

Scener animeres ved å bevege objekter rundt på skjermen ved bruk av SKAction-objekter. Det opprettes ett handlingsobjekt for hver handling som skal utføres. Koden i liste 1.3 inkluderer bare en handling, som animerer sprite ved å kalle rotateByAngle-metoden for å rotere objektet. Du kan opprette en serie handlinger som skal kjøres sekvensielt ved å initialisere en SKAction for hvert trinn fulgt av en SKAction-sekvens for å kontrollere rekkefølgen på hendelser. En handlingssekvens som vil omfatte "romskipet" som roterer, går i pause i en kort periode og flyr av skjermen vil se slik ut:

 SKAction * rotate = SKAction rotateByAngle: M_PI varighet: 1; SKAction * pause = SKAction waitForDuration: 0.5; SKAction * fly = SKAction moveByX: 0 y: 100.0 varighet: 1; SKAction * animationSequence = SKAksjonssekvens: @ roter, pauser, flyr; 

Ring nodeens runAction-metode for å sykle en gang gjennom animasjonssløyfen. Du kan også lage en repeterende animasjon ved å kalle metoden repeatActionForever.

Pass på funksjonskryp

Selv om det nye SpriteKit-rammeverket kan redusere utviklingslivssyklusen sterkt, kan spillutvikling lett bli full av funksjonskryp hvis ikke godt planlagt. Du bør diagramme hver scene og planlegge overgangene før du begynner å kode. Når kodingen begynner, gjør SpriteKit-rammeverket å legge til kompleks funksjonalitet enkelt. Å legge fysikk, som kollisjoner og kontakter, er mer intuitivt. Totalt sett er mulighetene uendelige.

© Copyright 2021 | pepebotifarra.com