, bliver varmere: intelligent sigte med varmesøgende missiler,,,,, andel,,,,,,,, 3,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss., i det foregående forelæsning, vi havde et målsøgende missil efter et fælles mål.denne lektion vil vise dig, hvordan at omdanne deres missiler i varmesøgende missiler for mange mål.,,, hvis du ikke har læst den første målsøgende missil forelæsning, du kan downloade det. luk fil, der indeholder kildekoden, vi starter med denne forelæsning.,, endelige resultat forpremiere, lad os tage se på det endelige resultat, vi arbejder hen imod:,, trin 1: ændre den kanon grafisk, den eneste film magasin i biblioteket, vi bliver nødt til at ændre den, kanoner, da vi vil gøre det med henblik på den nærmeste mål før optagelserne.husk, at 0 °, rotation, betyder, at pege på den rigtige, så gør det grafiske i overensstemmelse hermed, trin 2: erklærer afstand variabler til kanonen, jeg går til genbrug, targetx, og targety, variabler til at beregne afstanden fra kanonen fra målet, så jeg vil erklære dem på begyndelsen af klasse i stedet for i, playgame, funktion, samt en ny variabel opbevarer de beregnede afstand: private var missil: missil = nye missile(); private var hastighed: int = 15 private var kanon: kanon = nye cannon(); private var missileout: boolean = falske private var let: int = 10; private var mål: mål = nye target(); private var sal: int = 385 og private var tyngdekraften: antal = 0, 5; private var targetvy: antal = 0; //curvertikal hastighed af target - privat leje var afstand: int. private var targetx: int. private var targety: int. nu, targetx, og targety, variabler, vil blive erklæret for, playgame, funktion:, privat funktion playgame (ref.: begivenhed): ugyldig (hvis (missileout) (hvis (missil. hittestobject (target)) (var - eksplosion: eksplosion = nye explosion(); addchild (eksplosion, eksplosion. x = missil. x eksplosion. y = missil. y. removechild (-); missileout = falske} andre (targetx = mål. x - missil. x; targety = mål. y - missil. y, var rotationen: int = matematik. atan2 (targety, targetx) * 180 /math.pi; hvis (matematik. abs (rotation - missil. skift) > 180) (hvis (rotation > 0 & & missile.rotation < 0) missile.rotation - = (360 - rotation + missil. skift) /lette; andre, hvis (missile.rotation > 0 & & rotation < 0) missile.rotation + = (360 - rotation + missil. skift) /lette;} andre, hvis (rotation < missil. skift) missile.rotation - = matematik. abs (missile.rotation - rotation) /lette; andre missile.rotation + = matematik. abs (rotation - missil. skift) /lette; var vx: antal = hastighed * (90 - matematik.abs (missil. skift) /90; var vy: antal; hvis (missile.rotation < 0) vy = - hastighed + matematik. abs (vx); andre vy = hastighed - matematik. abs (vx) missil. x + = vx missil. y + = vy;}} targetvy + = alvor; målet. y + = targetvy; hvis (mål. y > gulv) (mål. y = sal. targetvy = - 18), trin 3: få kanonen mod de mål, der tidligere var i det, playgame, funktion, vi var kun interesseret i at vide, om de missiler var ude på at tage sig af sine rotation og forslag.nu har vi brug for at vide, hvis missilet er endnu ikke blevet skudt og ajourføre den kanon er rotation, privat funktion playgame (ref.: begivenhed): ugyldig (hvis (!missileout) (targetx = mål. x - kanon. x; targety = mål. - kanon. y. cannon.rotation = matematik. atan2 (targety, targetx) * 180 /math.pi;} andre (hvis (missil. hittestobject (target)) (var - eksplosion: eksplosion = nye explosion(); addchild (eksplosion); eksplosion. x = missil. x eksplosion. y = missil. y. removechild (-); missileout = falske} andre (targetx = mål. x - missil. x; targety = mål. y - missil. y, var rotationen: int = matematik. atan2 (targety, targetx) * 180 /math.pi; hvis (matematik. abs (rotation - missil. skift) >180) (hvis (rotation > 0 & & missile.rotation < 0) missile.rotation - = (360 - rotation + missil. skift) /lette; andre, hvis (missile.rotation > 0 & & rotation < 0) missile.rotation + = (360 - rotation + missil. skift) /lette;} andre, hvis (rotation < missil. skift) missile.rotation - = matematik. abs (missile.rotation - rotation) /lette; andre missile.rotation + = matematik. abs (rotation - missil. skift) /lette; var vx: antal = hastighed * (90 - matematik. abs (missil. skift) /90; var vy: antal; hvis (missile.rotation < 0) vy = - hastighed + matematik. abs (vx); andre vy = hastighed - matematik. abs (vx) missil. x + = vx missil. y + = vy;}} targetvy + = alvor; målet. y + = targetvy; hvis (mål. y > sal) (mål. y = sal. targetvy = - 18), nu kanonen roterer i forhold til målet holdning.,, trin 4: matche missilet er vekseldrift med kanonen. den kanon er at dreje, men missilet bliver skudt i opadgående retning.i stedet for den hårde kodet vekseldrift med kanonen er nuværende position på det tidspunkt, hvor missilet er blevet skudt, privat funktion skyde (ref.: mouseevent): ugyldig (hvis (!missileout) (addchild (-); swapchildren (missil - kanon); //missil kommer ud fra bag kanonen missileout = sandt; missil. x = kanon. x missil. y = kanon. y. missile.rotation = cannon.rotation;}}, missilet vil se ud, som om det var faktisk ude af den kanon.,, løntrin 5: mere end et mål, lige nu - - er at gå efter et mål ", men hvad hvis vi har flere mål?hvordan vil den afgøre, hvilken én at gå efter?først, lad os beslutte, hvor mange mål vil der være, så vil vi sætte hvert mål i et system.i dette eksempel vil jeg sige, at der er to mål, og jeg vil give hvert mål, en tilfældig holdning på skærmen. private var mål: mål; private var sal: int = 385 og private var tyngdekraften: antal = 0, 5; private var targetvy: antal = 0; //nuværende vertikal hastighed af target private var afstand: int. private var targetx: int. private var targety: int. private var numtargets: int = 2; private var mål: array = [] offentlig funktion main() {addchild (kanoner); kanon. x = 50 kanoner. y = 380; addeventlistener (event.enter_frame, playgame) fase. addeventlistener (mouseevent.click, skyd) til (var - jeg: int = 0. jeg < numtargets; jeg + +) (mål = nye target(); addchild (target), stenkulstjærefå. x = matematik. random() * 600; målet. y = matematik. random() * 400; mål. tryk (target)}}, nu har vi mere end et mål på skærmen.,, missilet er stadig kun at anerkende eksistensen af et mål.vi ordner det næste.,, trin 6: søge den tætteste mål har vi missil, som søger, mål, variable, så lad os se, mål, system - og se, hvem er tættere på.de mål, variable vil være referencer til den nærmeste ved begyndelsen af det, playgame, funktion, privat funktion playgame (ref.: begivenhed): ugyldig (for (var - jeg: int = 0. jeg < targets.length; jeg + +) (targetx = mål [i]. x, x - missil.; targety = mål [i]. y - missil. y. var dist: int = matematik. sqrt (targetx * targetx + targety * targety); //afstanden fra et sted til et andet i 2d - rum.hvis (i = = 0
det bliver varmere, nemlig intelligent sigte med varme
Next Page:få den fødselsdag ravage i dag.