Page 1 of 1

Matemaattinen ongelma

Posted: Sat Mar 29, 2008 11:01 am
by jannepelaa
Miten saan tiedettyä esim. luodin tulosuunnan perusteella osuiko luoti tästä suunnasta nähden objektin vasemmalle vai oikealle puolelle?
Kuva:
Image
Nyt luoti siis osuisi oikealle puolelle.

Re: Matemaattinen ongelma

Posted: Sat Mar 29, 2008 11:39 am
by SPuntte
Vastaus: et mitenkään.

Pelkkä tulokulma ei riitä, jos kyseessä on muodoltaan nollaulotteisesta pisteestä poikkeava objekti. Kannattaa toteuttaa suunnan tunnistus esim. kahdeksalla "liipaisinobjektilla", jotka sijaitsevat varsinaisen objektin ympärillä 45 asteen välein. Näin saat törmäyskulman 22,5 asteen tarkkuudella.

Eli, jos luoti törmätessää osuu vain yhteen liipaisimeen, on törmäyskulma se kulma, jossa tämä liipaisin sijaitsee suhteessa isäntään. Jos taas luoti osuu kahteen liipaisimeen, kulma on näiden suuntakulmien keskiarvo.

Toki liipaisimia voi tehdä enemmänkin mutta tarkkuus alkaa heikentyä varsinkin, jos itse isäntäobjekti on halkaisijaltaan pieni tai luoteja siirretään kerralla muutamaakaan pikseliä enemmän. Kannattaa siis ehdottomasti päivittää logiikka useamman kerran yhtä framen piirtoa kohden.

Re: Matemaattinen ongelma

Posted: Sat Mar 29, 2008 11:46 am
by Aavesoturi
Tuli tämmönen idea mieleen, että mitäs jos laskis kaksi apupistettä; toinen hieman objektin keskipisteen vasemmalla ja toinen oikealla puolella. Nämä siis laskettaisiin siten että toinen puoli saadaan kulkemalla keskipisteestä muutamia pikseleitä suuntaan tulokulma+90 astetta ja toinen kulmaan tulokulma-90 astetta.

Sitten kun ammus osuu objektiin, katsotaan distancella kumpaa apupistettä lähempänä törmäys kohta on ja se kertoisi ollaanko objektin vasemmalla puolella vai oikealla puolella.

Jos haluttaisiinkin laskea vasen ja oikea puoli objektin näkökulmasta eikä ammuksen, niin laskelmissa käytetään vaan tulokulman sijasta objektin asentoa.

Kertokaa jos keksitte miksi tämä ei toimisi; tämä idea vaan tuli mieleen hetken kuvaa tuijotettuani :)

Re: Matemaattinen ongelma

Posted: Sat Mar 29, 2008 1:23 pm
by jannepelaa
Ongelma ratkaistu. :D Kiitoksia avusta.

Re: Matemaattinen ongelma

Posted: Sat Mar 29, 2008 3:55 pm
by SPuntte
Tosiaan, unohdin kokonaan että CBssä on funktiot CollisionX() ja CollisionY() :oops: