Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
//..... //Blickrichtung og3DVector vCameraDirection; vCameraDirection = og3DVector(sinf(g_fCameraAngle), 0.0f, cosf(g_fCameraAngle)); //2D-Blickrichtung //Strafevektor og3DVector vStrafe = og3DVectorCross(og3DVector(0.0f, 1.0f, 0.0f), vCameraDirection); //Linksrechts g_fCameraAngle += OG_DEG_TO_RAD(g_fMouseSpeed * 40.0f) * DI[OG_MOUSE_X_POS].fAnalog; //Strafe vOldCameraPosition = g_vCameraPosition; if(DI[OG_KEY_A].bDigital) vCameraVelocity -= vStrafe; if(DI[OG_KEY_D].bDigital) vCameraVelocity += vStrafe; //Vor und zurück vCameraDirection = og3DVector(sinf(g_fCameraAngle), g_fCameraUpDown, cosf(g_fCameraAngle)); //3D-Blickrichtung if(DI[OG_KEY_W].bDigital) vCameraVelocity += vCameraDirection; if(DI[OG_KEY_S].bDigital) vCameraVelocity -= vCameraDirection; //Kollisionstest if(g_bCollisionTest) { vCameraVelocity = og3DVectorNormalizeEx(vCameraVelocity); if(ogCollisionLineModel(vOldCameraPosition, vOldCameraPosition + og3DVectorNormalizeEx(vCameraVelocity) * g_fSpeed * fTime, g_Model, g_mWorld, ogMatrixInvert(g_mWorld), 0.0f, NULL, &g_vNormal)) { vCameraVelocity += g_vNormal * -og3DVectorDot(vCameraVelocity, g_vNormal); //g_vCameraPosition = vOldCameraPosition; } else g_vNormal = og3DVector(0.0f); } //Kameraposition aktualisieren g_vCameraPosition += og3DVectorNormalizeEx(vCameraVelocity) * g_fSpeed * fTime; |
C-/C++-Quelltext |
|
1 |
if(ogCollisionLineModel(vOldCameraPosition, vOldCameraPosition + vCameraVelocity * g_fSpeed * fTime, g_Model, g_mWorld, |
Zitat von »"Spik)evil("«
Die Zeile geht kürzer
C-/C++-Quelltext
1 if(ogCollisionLineModel(vOldCameraPosition, vOldCameraPosition + vCameraVelocity * g_fSpeed * fTime, g_Model, g_mWorld,
Anonymous
unregistriert
Zitat von »"Black-Panther"«
2. Wieso hörst du nach g_mWorld auf?
Anonymous
unregistriert
Zitat
Die große Frage ist aber: Wie berechnet man D? Den genau diese Berechnung gibt ja an, wie das Gleiten aussieht, bzw wo seine Schwächen liegen. Und die Bewegung zu stoppen während man kollidiert würde doch darin resultieren, dass man sich immer noch in der Mauer befindet, und im nächsten Frame möglicherweise noch weiter reinrutscht (was wieder von der Berechnung von D abhängt) oder hab ich dich falsch verstanden?
Werbeanzeige