, opbygge et fly spil med sprite kit - eksplosioner &skyer,,,,, 3,,,,,,,,, 3,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, denne forelæsning vil lære dig at bruge den sprite - ramme til at skabe et enkelt fly spil.på den måde, vil du lære alle de centrale begreber i sprite kit: animeringer, udledere, kollision påvisning og mere!,,,, serie format, hvad resten vil blive opdelt i tre dele, for helt at dække hver sektion.efter at have læst de tre del forelæsning, læserne vil være i stand til at skabe en interessant 2d spil ved hjælp af nye sprite kit ramme med programmerbare 7.,,, - - til at bygge et fly spil med sprite kit - projekt opsætning, bygge et fly spil med sprite kit - fjender & udledere, opbygge et fly spil med sprite kit - eksplosioner & skyer, hver del vil udarbejde en praktisk resultat, og summen af alle parter vil udarbejde den endelige kamp.mens hver del af den række kan læses uafhængigt, vi anbefaler følgende med trinvis for en fuldstændig forståelse af spørgsmålet forelagt.kildekoden til kampen, der gradvist med hver enkelt post.,,, sidste glimt,,,,,, illustration af endelige resultat - sprite kit.,,,,, hvor vi slap... velkommen tilbage til den tredje del af vores fly spil med sprite kit.i vores sidste post, vi fokuserede på at tilføje fjender og kilder til kampen.i dagens lektion, du vil programmere kollisionen påvisning, arbejde med en konsistens, atlas, og skabe nogle eksplosioner, med henblik på at afslutte spillet.lad os komme i gang!,,, 1.tilsætning af kollision afsløring, krydset prøver ofte anvendes i miljøer, hvor mere end en genstand eksisterer.i sprite - - du vil bruge kollisioner og kontakter til at opdage, hvis en given genstand ramt et objekt, i dette spil, du vil bruge kollision påvisning.når en kugle kommer i kontakt med en fjende, både den kugle, og fjenden vil blive fjernet fra skærmen.,, til at gøre det, er du nødt til at definere den kategori, maske værdier.der skal være en kategori for hver fysisk objekt.i myscene. h, tilføje følgende kode:,, statisk i denne uint8_t bulletcategory = 1; statiske denne uint8_t enemycategory = 2, nu, mens vi stadig er i myscene. h, tilføje, skphysicscontactdelegate, som vi gjorde før med, uiaccelerometerdelegate,.,, @ grænseflade myscene: skscene < uiaccelerometerdelegate, skphysicscontactdelegate > {, før du kan bruge fysik, du er nødt til at indlede de fysiske omgivelser.på hvis (self - = [super initwithsize: størrelse]), betinget af, instantiate alvoren med et 0 - værdi (dvs. ingen tyngdekraft), og derefter kontakte delegerede:,, self.physicsworld.gravity = cgvectormake (0, 0); self.physicsworld.contactdelegate = selvstændig;,, de to organer, der har brug for fysik er kuglen og fjender..lad os sætte flere egenskaber for hver enkelt.lad os tilføje kode under inden for - (indhold) enemiesandclouds, metode:,, enemy.physicsbody = [skphysicsbody bodywithrectangleofsize: fjende. størrelse] enemy.physicsbody.dynamic = ja, enemy.physicsbody.categorybitmask = enemycategory; enemy.physicsbody.contacttestbitmask = bulletcategory; enemy.physicsbody.collisionbitmask = 0, koden over medlemsstaterne, at kontakt område af fly vil være et rektangel, der er størrelsen af fjenden sprite.den dynamiske ejendom angiver, om fysik krop er flyttet fra fysik simulation.næste, categorybitmask, er, hvor du satte den kategori, den genstand, og de, contacttestbitmask, henviser til, hvilke organer de fjender vil interagere med (i dette tilfælde med kugler,.,, så lad os definere fysik for kuglen objekt.inden for - (indhold) touchesbegan: (nsset *) berører withevent: (uievent *), hvis metode, kuglen kode bør ændres for at tilføje:,, bullet.physicsbody = [skphysicsbody bodywithrectangleofsize: kugle. størrelse] bullet.physicsbody.dynamic = nej; bullet.physicsbody.categorybitmask = bulletcategory; bullet.physicsbody.contacttestbitmask = enemycategory; bullet.physicsbody.collisionbitmask = 0,,, - du har defineret egenskaber for kollisioner.vi må imidlertid påvise, hvis der er kontakt.,, du er nødt til at anvende den metode, didbegincontact at vide, hvilke genstande har kontakt med andre genstande.så følgende kode beregner de to organer, der har kontaktet, og samtidig fjerner dem fra gerningsstedet:,, - (indhold) didbegincontact: (skphysicscontact *) kontakt (skphysicsbody * firstbody; skphysicsbody * secondbody; hvis (contact.bodya.categorybitmask < kontakt. bodyb. categorybitmask) (firstbody = contact.bodya; secondbody = contact.bodyb;} andet (firstbody = contact.bodyb; secondbody = contact.bodya;} hvis ((firstbody.categorybitmask & bulletcategory).= 0) (sknode * projektil = (contact.bodya.categorybitmask & bulletcategory)?contact.bodya.node: contact.bodyb.node; sknode * fjende = (contact.bodya.categorybitmask & bulletcategory)?contact.bodyb.node: contact.bodya.node; [projektil runaction: [skaction removefromparent]]; [fjende runaction: [skaction removefromparent]]}}, meget simpelt, ikke?nu, bygge og drive.hvis alt gik godt, så fjenden og kugle vil forsvinde, når de støder sammen.,,, 2.med en konsistens, atlas, vores kamp er næsten færdigt, men der er brug for handling og informationstiltag.de to næste skridt vil tilføje eksplosioner og lidt animeringer fremstillet af skyer. hidtil har vi ikke brugt tekstur atlas.sprite kit omfatter tekstur atlas generator, som har flere interessante træk.i xcode 5, du kan skabe en konsistens, atlas med følgende foranstaltninger:,,, alle alferne i en enkelt billet.for vores projekt, du kan finde alle de billeder i vedlagte downloade inden for "eksplosion" mappe.,, ændring, udvidelse af mappen til *. atlas.i vores tilfælde omdøbe eksplosion, eksplosion. atlas.,, trække og smid mappen til projektet.jeg tilføjede den til at støtte filer folder inden for xcode navigatør.,, sørg for, at den mulighed "give konsistens altas generation".at kontrollere, at bygge indstillinger af dit projekt.,,,,,, det er det.endnu en gang billeder til denne del er til rådighed inden for rammerne af de ressourcer, folder i vedlagte download.,,, du er nødt til at læsse tekstur atlas til projektet, inden for myscene. h, tilføje:,, @ ejendom nsmutablearray * explosiontextures;, ved afslutningen af den, hvis (self - = - super initwithsize: størrelse]), betinget af, at tilføje følgende kode snippet: //belastning eksplosioner sktextureatlas * explosionatlas = [sktextureatlas atlasnamed: @ "eksplosion"] nsarray * texturenames = [explosionatlas texturenames] _explosiontextures = [nsmutablearray nye]; (nsstring * navn i texturenames) (sktexture * konsistens = [explosionatlas texturenamed: navn]; [_explosiontextures addobject: tekstur]},,, 3.tilsætning af eksplosioner, når du har den eksplosioner lastet, et skridt, der er nødvendige for at se dem i aktion.du vil skabe en eksplosion, der opstår, når en kugle rammer en fjende.ved afslutningen af den, hvis betinget, hvis ((firstbody.categorybitmask & bulletcategory).= 0), tilføjes følgende indlæg: //add eksplosion skspritenode * eksplosion = [skspritenode spritenodewithtexture: [_explosiontextures objectatindex: 0]] explosion.zposition = 1; explosion.scale = 0, 6; explosion.position = contact.bodya.node.position; [selv addchild: eksplosion] skaction * explosionaction = [skaction animatewithtextures: _explosiontextures timeperframe: 0,07]; skaction * fjerne = [skaction removefromparent]; [eksplosion runaction: [skaction sekvens: @ [explosionaction, fjerne]]], bygge og drive projektet til at teste kollision og eksplosion animation.du skal se noget som det næste tal:,,,,,, illustration af eksplosionen (xcode).,,,, 4.tilsætning af skyer, vi har næsten afsluttet kampen!det er bare den sidste detalje.nu er du nødt til at skabe de skyer atlas, og så last tekstur atlas til hukommelse.,, før vi skrive koden for dette skridt, være sikker på, at tilføje. atlas udvidelse til "sky" mappe i vedlagte downloade og for at få det ind i dit projekt.,, som, myscene. h, fil tilføje følgende:,, @ ejendom nsmutablearray * cloudstextures;,, som, myscene. m, fil, under "belastning eksplosioner" kode, tilføje følgende: //belastning skyer sktextureatlas * cloudsatlas = [sktextureatlas atlasnamed: @ "sky"] nsarray * texturenamesclouds = [cloudsatlas texturenames]; _cloudstextures = [nsmutablearray nye]; (nsstring * navn i texturenamesclouds) (sktexture * tekstur = [cloudsatlas texturenamed: navn]; [_cloudstextures addobject: tekstur]}, det sidste skridt er tilfældigt generere skyer og forelægge dem på skærmen med bevægelse.du er nødt til at tilføje følgende indlæg ved afslutningen af den, enemiesandclouds, metode: //tilfældige skyer int randomclouds = [selv getrandomnumberbetween: 0: 1]; hvis (randomclouds = = 1) (int whichcloud = [selv getrandomnumberbetween: 0: 3]; skspritenode * sky = [skspritenode spritenodewithtexture [_cloudstextures objectatindex: whichcloud]]; int randomyaxix = [selv getrandomnumberbetween: 0: screenrect. størrelse. højde] cloud.position = cgpointmake (screenrect. størrelse. højde + cloud.size.height/2, randomyaxix); cloud.zposition = 1; int randomtimecloud = [selv getrandomnumberbetween: 9: 19] skaction * flytte = [skaction til: cgpointmake (0-cloud.size.height, løbdomyaxix) varighed: randomtimecloud] skaction * fjerne = [skaction removefromparent]; [sky runaction: [skaction sekvens: @ [, fjerne]]]; [selv addchild: sky]), bygge og drive projektet endnu en gang.hvis alt går vel, du skal se noget som det næste tal:,,,,,, illustration af den endelige kamp (xcode).,,,,,,, konklusion, det var den tredje og sidste lektion i, hvordan til at skabe et fly med anvendelse af de nye rammer, der er til rådighed, med den sprite - six 7 sdk.hvis du har fulgt denne serie fra start til slut bør de nu har tilstrækkelig viden til at skabe en enkel sprite - spil med denne dynamiske nye spil motor.hvis du har spørgsmål eller kommentarer, du er fri til at forlade dem nedenunder.,,, anerkendelser & henstillinger, vil vi gerne takke daniel feren č ak for at give os den art, der anvendes til at producere denne pædagogiske spil serie.,, for at kunne forstå den tutor - udgaven, vi anbefaler, at du teste vores kode ved at sende det til en rigtig anordning kører 105 7.du får brug for xcode 5 og den seneste programmerbare 7 sdk.hvis du ikke allerede har disse redskaber, du kan downloade dem fra apple udvikler center.en gang til, installere software, og du er klar til at begynde.