Kezdőoldal » Számítástechnika » Programozás » Hogyan tervezzek meg egy 2D...

Hogyan tervezzek meg egy 2D játékmotort?

Figyelt kérdés

Egy bonyolultabbnak amiben van fizika ,és részecske effektusok is.


Még soha nem csináltam ilyet.

Csak kisebb konzolos progikat írtam.

Amőbát és tetriszt is írtam meg sakkot.


De egy ilyennek,hogyan kell neki állni?


2012. nov. 9. 23:59
 1/6 anonim ***** válasza:
Keresel egy jó kis API -t. Ilyen az OpenGL, SDL, SFML, GLUT. 2D játék motorhoz Clanlib, de azt rohadt nehéz meg tanulni. Úgy, hogy SFML/SDL. A glut inkább 3d -re van.
2012. nov. 10. 05:59
Hasznos számodra ez a válasz?
 2/6 iostream ***** válasza:
Keresel egy fizikai endzsint, és azt használod. Javaslom pl a Box2D-t, nagyon jól használható. És kész is a fizikai motorod. A grafika meg bármi, 2D-ben bármivel lehet rajzolni, csak annyit kell megoldani, hogy a fizikai entitásokat leképezd a grafikus térre.
2012. nov. 10. 10:06
Hasznos számodra ez a válasz?
 3/6 A kérdező kommentje:

Kösz adtam zöld kezet.


"fizikai entitásokat leképezd a grafikus térre."

Ezt kitudnád fejteni bővebben.Mert nem nagyon értem ezt a mondatot.

2012. nov. 11. 03:36
 4/6 iostream ***** válasza:
Vannak testek a fizikai világban. Ezeket meg kell jeleníteni. A fizikai testről tudod, hogy a fizikai világban a 10, 70 koordinátán van, és mondjuk négyzet alakú, 30 fokban elfordulva óramutató járással szemben. Ebből neked el kell döntened, hogy mi látszik és hogy. Lehet, hogy a fizikai világból te csak a 20, 30 -> 40, 50 négyzetet kívánod megjeleníteni, ekkor jó eséllyel azt a négyzetet ki sem rajzolod, ha csak nem elég nagy, hogy belógjon. De ha bennt is van, akkor is a mérete nem annyi pixel lesz, amennyi egység a fizikai világodban, hiszen miért lenne ugyanannyi? Aztán a zoomolás változhat is. Eleve nem muszáj négyzetként kirajzolni, rajzolhatsz köröket is helyette. Ezt jelenti a leképezés. Hogy jeleníted meg a fizikai világot.
2012. nov. 11. 08:42
Hasznos számodra ez a válasz?
 5/6 A kérdező kommentje:

Ezt nem tudom megcsinálni.

Te hogyan csinálnád?

2012. nov. 11. 23:16
 6/6 iostream ***** válasza:

Én már meg is csináltam.


void draw(Graphics& graphics, std::vector<b2Body*>& boxes)

{

for (auto box: boxes)

{

auto shape = reinterpret_cast<b2PolygonShape*>(box->GetFixtureList()->GetShape());

Polygon polygon(&shape->m_vertices[0], &shape->m_vertices[shape->m_vertexCount]);

for (auto& vertex: polygon)

{

vertex = rotate(vertex, box->GetAngle());

vertex = distort(vertex, physWidth, physHeight, width, height);

vertex += distort(box->GetPosition(), physWidth, physHeight, width, height);

}

graphics.drawPolygon(polygon, colorFromAngle(box->GetAngle()));

}

}

2012. nov. 12. 09:43
Hasznos számodra ez a válasz?

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!