25.12.2012

Oma koodailuprojekti, osa III

Minne nokka näyttää

Nyt kun olin vihdoin saanut sekä kuvioni kierron kuntoon ja sen suunnankin vihdoin selville, perustoimista jäljellä oli liikkuminen. Ensimmäinen yritelmäni oli vallankin jälkikäteen ajateltuna naurettava: jos kulma osoitti johonkin pääilmansuuntaan, kyseinen suunta sai täyden nopeusmuutoksen - jos taas sille välille niin jonkun puolikkaan muutoksen kahteen pääsuuntaan jaettuna. Testatessa se näytti ensin hienolta, mutta hetken päästä huomasin, että "Heeeeei... tämähän nykii kääntyessä ja kaasuttaessa ihan omituisesti". Pienikin poikkeama 3π/2:sta muutti nopeutta aina täysillä johonkin väli-ilmansuuntaan. Hupsis.

Realistisempi nopeusmuutos

Hyvin pienen ruuduntuijottelun jälkeen pääparassani syttyi lamppu: jos vaikka käyttäisin noita hiton trigonometrisia funktioita kertomaan juuri tuon: tunnettu kulma ja nopeus voidaan kääntää kertomaan aiemmin ihmettelemäni Δx ja Δy -arvot... Eli sama temppu, mutta päinvastaiseen suuntaan. Onneksi tuon äkkäämiseen ei mennyt muutamaa minuuttia enempää.

tempspeed = Vector(self.speed.x, self.speed.y)
dy = math.fabs((math.sin(self._angle))*self._acceleration)
dx = math.fabs((math.cos(self._angle))*self._acceleration)

# ...


Toki tuossa pitää vielä tarkastella polygonin suunnan perusteella, ovatko Δx ja Δy positiivisia vai negatiivisia kukin, jotta kiihdytyksen voi asettaa oikein. Pääasia, että se näyttää hyvältä ainakin tällä hetkellä.

Partikkeliefektejä!

Pelkän kuvion "lennättely" tyhjällä ruudulla käy äkkiä tylsäksi. Näpertelin siis Star Control (tai Auts tai  V-Wing tai Wings) -henkisen kaasutteluefektin. Sen tarkemmin moottoripaikkoja miettimättä asetin* ne polygonini alakulmiin. Aina, kun kaasua painetaan, senhetkisiin koordinaatteihin pudotetaan palikat, jotka kuolevat pois muutaman syklin päästä ja elellessään haalistuvat vähitellen. Tekaisin samalla vaivalla testimielessä warppinapin, jota painamalla palikka siirretään keskelle pelialuetta. Aiempaan paikkaan luodaan räjähdyksenomaiseti kahdeksan eri suuntiin lentävää partikkelia. Efekti on hauska, vaikka itse sanonkin. Räjähdyksiin minä tuota meinasin oikeasti käyttää.

*) Teinpä kaukoviisaana sentään sellaisen toteutuksen, että heti halutessani voin nakata ne mihin lystää, niissä lukumäärissä kuin haluan. Noin suunnilleen. Ehkä vältän tyhmyysrefaktorointia tällä tavoin.

Kavereita ruudulle

Mitäpä sitä suurinpiirtein kolmion muotoisella roikaleellaan tekisi 2d-avaruudessa ja varppailisi eestaas, jollei siellä ole seuraa? Tylsistyisi äkkiä, sanon minä. Mahdollisesti typerä ideanikin lienee jo tässä vaiheessa kaikille selvä kuin pläkki. Sekaan heitettäisiin tietenkin asteroideja!
Olin kovin riemastunut, kun sain kahdeksankulmaiset satunnaisepämuodot ruudulle neljässä eri kokoluokassa, pyörimään hiljakseen joko vasta- tai myötäpäivään ja parin iteraation jälkeen myös lentämään omaan suuntaansa. Se oli upeaa.
Pröp pröp pröp
Minä ainakin olin tuosta ylpeä.

Ei kommentteja:

Lähetä kommentti