C# forgatás, mozgás kiszámítása játékhoz pontosan?
Figyelt kérdés
Forgást kéne kiszámítanom és hogy utána a W lenyomása után haladjon.
X += (int)((Speed + 1) * Math.Cos(Wheels.Rotation));
Y += (int)((Speed + 1) * Math.Sin(Wheels.Rotation));
A Speed adja meg a sebességét, a Wheels.Rotation pedig radiánban az elfordulás mértékét. (Ez az érték lehet -4,63-tól 1,64-ig bármilyen tizedes tört)
Csakhogy ez csak nagyobb szögeknél végez más mozgást (0-44-ig egyenesen megy, 45-89-ig átlósan, stb.)
Nincs erre egy pontosabb képlet, hogy "jobban tudjon mozogni"?
2013. szept. 8. 13:15
1/6 anonim válasza:
Szerintem ne integerben számold. Milyen nagyságrendű a Speed?
2/6 2xSü válasza:
Valószínű itt az a gond, hogy egésszé van alakítva a kiszámolt érték. Itt kérdés, hogy a Speed milyen értéket vesz fel. Ha kijön, hogy x irányban 1,428-et, y irányban 0,326-ot kell lépni, akkor ugye az egésszé alakítás miatt ebből 1 és 0 lesz. A megoldás egyszerű, használj lebegőpontos változót x-nek és y-nak.
3/6 A kérdező kommentje:
Ez nekem is eszembe jutott, de sajnos az X és az Y a piceleket jelöli. Nem hiszem, hogy tudnék mozgantni valamit fél pixellel arrébb
2013. szept. 8. 14:13
4/6 A kérdező kommentje:
A Speed 1-10-ig terjedhet
2013. szept. 8. 14:13
5/6 anonim válasza:
Ha nem jó a program (és nem jó) akkor át kell alakítani. Ne a pixeleket jelölje, hanem a kirajzolásnál kerekítsd az értéket. (Esetleg másik Xben tárolható a kerekített érték.) Így pár lépésenként fog egy pixelt oldalra ugrani, amit ugye így szeretnél.
6/6 A kérdező kommentje:
Jó ötlet, köszönöm, mindjárt ki is próbálom!
2013. szept. 9. 06:32
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
A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!