et tårn forsvar spil i as3: fjender og grundlæggende ai

, et tårn forsvar spil i as3: fjender og grundlæggende ai,,,,, 4,,,,,,,,, 6,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, hey - udviklere, velkommen til anden del af mit tårn forsvar spil tutor.i den første del, vi udviklede den grundlæggende mekanisme til at skabe tårne og gøre dem til at skyde mod punkt af klik med musen.men det er ikke, hvad der er i.i denne del vil vi udvide kampen til også at omfatte fjender, grundlæggende kunstig intelligens (ai) i tårne, og nogle spil mere elementer.er du klar?,,,, endelige resultat forpremiere, dette er den leg, vi skal skabe denne lektion:,, klik orange til tårne.de røde cirkler er fjender, og antallet af hver især repræsenterer den ramte punkter.,, trin 1: en gang i den foregående tutorielle udviklede vi en kamp, der har placeholders i tårnene.vi kunne anvende er ved at trykke dem, placeholders, og der er med henblik på mus fingerpeg og skudt kugler til det punkt, hvor brugeren klikkede. er vi færdige med en største, klasse, der havde spillet, og spil logik.bortset fra, at vi havde, tårnet, klasse, der var ikke meget, undtagen, ajourføre, funktion, der fik tårnet rotere., 2. trin: en særskilt kugle klasse, vi tidligere har skabt de kugler, vigtigste klasse og knyttet en, enter_frame, lytter til at flytte det.kuglen havde ikke nok egenskaber, tidligere har betragtet det som en en særskilt klasse.men i sådan en kamp kugler har mange sorter, som hastighed, skader osv. det er en god idé at trække kuglen kode og sammenfatte det i en særskilt, kugle, klasse.lad os gøre det, skabe en ny klasse, som hedder, kugle, udvidelse, sprite, klasse.den grundlæggende kode i denne klasse skal være:, pakke (import flash.display.sprite; offentlige klasse kugle udvider sprite {offentlige funktion bullet() {}}}, næste vi sætter kode at trække kuglen grafisk, taget fra de vigtigste,,, kugle.som vi gjorde med, tårnet, klasse, skaber vi en funktion, træk i en kugle, klasse:, privat funktion draw(): ugyldig (var - g: grafik = this.graphics; g.beginfill (0xeeeeee); g.drawcircle (0, 0, 5); g. endfill();}, og vi opfordrer denne funktion fra den kugle, konstruktøren: offentlig funktion bullet() {draw();}, er vi nu tilføje nogle egenskaber til kuglen.yderligere fire variabler:, hastighed, speed_x,, speed_y og skader, før den kugle, konstruktøren: private var hastighed: antal; private var speed_x: antal; private var speed_y: antal; offentlige var skader: int. hvad er disse variabler for?,, hastighed: denne variabel opbevarer kugle.,, speed_x, og speed_y: disse lagre x - og y - komponenter i den hastighed, således at beregningen af at bryde den hastighed i dens komponenter ikke behøver at ske igen og igen.,, skader: dette er mængden af skade kuglen kan gøre til en fjende.vi holder denne variabel offentlige, som vi kræver det i vores spil loop i de vigtigste, klasse.,, vi aktivere disse variabler i de pågældende.opdatere din kugle, konstruktøren: offentlige funktion kugle (vinkel: antal) (hastighed = 5, skader = 1; speed_x = matematik. fordi (vinkel * math.pi /180) * hastighed speed_y = matematik. synd (vinkel * math.pi /180) * hastighed draw();}, bemærker den vinkel, variabel, vi får producenten.det er i den retning (grader), hvor kuglen vil bevæge sig.vi skal bare bryde den fart, i x - og y - komponenter og cache dem til senere brug. det sidste, der er tilbage i en kugle, klasse, er at have en update, funktion, som vil blive kaldt fra spillet loop ajourføring (videre) kuglen.der tilføjes følgende funktion ved afslutningen af en kugle, klasse: offentlig funktion update(): ugyldig (x = speed_x; y + = speed_y;}, bingo!vi er færdige med vores kugle, klasse.,, trin 3: ajourføring af de vigtigste klasse, vi flyttede en del af kugle - kode, main, klasse til sine egne, en kugle, klasse, så en masse kode forbliver uudnyttede, vigtigste og skal ajourføres, første udgår, createbullet(), og movebullet(), funktioner.også fjerne, bullet_speed, variable. næste, gå til den, der skyder, funktion og ajourfører den med følgende kode:, privat funktion skyde e: mouseevent): ugyldig (for hver (var det tårn i tårne) (var - new_bullet: kugle = ny kugle (tårnet. skift); new_bullet. x = tårnet. x + matematik. - (turret.rotation * math.pi /180) * 25 *; new_bullet. y = tårnet. y + matematik. synd (turret.rotation * math.pi /180) * 25 *; addchild (new_bullet)), er der ikke længere brug, createbullet, funktion at skabe kugle hellere bruge den. kugle, konstruktøren og give tårnet, rotation, til det, som er den retning, den kugle er bevægelse, og så behøver vi ikke at opbevare den i en kugle, rotation, ejendom, som vi gjorde tidligere.også vi ikke lægger nogen til at lytte til den kugle som kuglen vil blive ajourført i spillet loop.,, trin 4: at redde den kugle henvisninger, nu, hvor vi har brug for at ajourføre de kugler fra spillet loop, har vi brug for en henvisning af dem blive gemt et sted.løsningen er den samme som for de tårne: etablere et nyt system, der hedder, kugler, og skub kuglerne på det, som de er skabt.først erklære et system til lige under, tårne, array - erklæring: private var ghost_turret tårn; private var tårne: array = [] private var kugler: array = [], nu at fylde dette system.vi gør det, når vi skaber en ny kugle -, i skyder, funktion.der tilføjes følgende lige før, at kuglen til fase:, var new_bullet: kugle = ny kugle (tårnet. skift); new_bullet. x = tårnet. x + matematik. - (turret.rotation * math.pi /180) * 25 *; new_bullet. y = tårnet. y + matematik. synd (turret.rotation * math.pi /180 *) 25; kugler. - (new_bullet); addchild (new_bullet);,, løntrin 5: ajourføring af de kugler, som hvordan vi ajourfører er spillet loop, vi vil opdatere de kugler, også.men denne gang, i stedet for at bruge en til hver, loop, bruger vi en grundlæggende for, loop.før det her, vi skal tilføje to variabler til toppen af spillet loop, således at vi ved, hvilke variabler anvendes i spillet og kan sætte dem fri for affald samling., var det tårn, var kugle: kugle, gå og tilføje følgende kode i slutningen af kampen loop. for (var - jeg: int = bullets.length - 1; jeg > = 0, jeg...) (kugle = kugler [i]; hvis (!kugle) fortsætte; kugle. update();}, vi krydser over alle de kugler på scenen hver frame og kalde deres, ajourføre, funktion, som gør dem flytte.bemærk, at vi iterate, kugler, array i bakgear.hvorfor?vi vil se fremad. nu, hvor vi har en, tårnet, variable erklæret uden allerede, vi behøver ikke at erklære det igen i... hver sløjfe spir.ændre det: for hver (tårnet i tårne) {tårnet. update();}, vi endelig tilføje grænse kontrol tilstand. dette var tidligere i den kugle, enter_frame, men nu kan vi se det i spillet loop: hvis (kugle. x < 0



Previous:
Next Page: