Hogyan határozható meg a sebesség és irány alapján a következő hely a térben?
Sziasztok!
A síkban ugyebár a szinusz és koszinusz függvények segítségével megállapítható, hogy a sebessége és iránya alapján mi lenne a következő X és Y koordinátája egy játékban irányított tárgynak.
De hogyan kell ezt megoldani a térben? Milyen függvény alkalmas a Z irányban a következő koordináta megtalálására?
BlitzBasic3D-vel programozok nemrég, és úgy látszik, ezt a kérdést segítség nélkül képtelen vagyok megfejteni.
Egy olyan repülős játékot írnék, amiben magától menne a repülő előre, és az irányt a nyíl gombokkal lehetne megváltoztatni, mint régen pl. a Descent című játékban, csak itt a repülő nem állhat meg egyhelyben.
A segítő válaszokat előre is köszönöm.
Szerintem:
új pozíció (vektor) = jelenlegi pozíció (vektor) + sebesség (konstans érték) * irány(vektor)
"új pozíció (vektor) = jelenlegi pozíció (vektor) + sebesség (konstans érték) * irány(vektor)"
A jelenlegi pozícióhoz a jelenlegi X,Y és Z koordinátapontokból elég a Z értéket megadni? Tehát valahogy így: uj_z_hely=most_z+sebesseg*z_irany ?
Persze, ugyanaz. :)
Amit leírtam vektorműveletekkel, az ekvivalens ezzel a 3-mal együtt:
x = x + sebesség * irány_x
y = y + sebesség * irány_y
z = z + sebesség * irány_z
"Amit leírtam vektorműveletekkel, az ekvivalens ezzel a 3-mal együtt:
x = x + sebesség * irány_x
y = y + sebesség * irány_y
z = z + sebesség * irány_z"
Sajnos nem működött, mert pl. ha 0 valamelyik irány, akkor ugyebár 0-val szorozva az elmozdulás is nulla, nekem meg úgy kéne, hogy 0 irány esetén arra mozogjon: pl. ha X felé 0, akkor jobbra.
"gondolom a sebesség alatt egy skalármennyiséget értesz ami a sebesség nagysága, irány alatt meg valami mást, de mi az a más?"
Az irányt le lehet kérdezni a BB3D-ben az EntityPitch#, yaw# és roll# függvényekkel, szóval ez nem gond. Ezek elmozdulási szögeket jelentenek (angle) a megfelelő irányba.
"ha 0 valamelyik irány, akkor ugyebár 0-val szorozva az elmozdulás is nulla"
Hát pont ezt jelenti a 0 irány, hogy arra nincs elmozdulás.
"nekem meg úgy kéne, hogy 0 irány esetén arra mozogjon: pl. ha X felé 0, akkor jobbra."
Akkor hozzáadsz valamennyit a nullához... :D
Na szóval, a következő X koordináta így fest:
kovx=x+cos(360-irany)*sebesseg
a következő Y pedig:
kovy=y+sin(360-irany)*sebesseg
Ezek alapján a következő Z irány hogyan, mely szögfüggvénnyel kérdezhető le?
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!