P.S.: In meiner Engine soll sich die Spielfigur nach der Kamera richten:
Die Spielfigur wird herunterfallen wenn die Kamera heruntergeht. Dieses System stellt ein verbessertes Ausweichen von Kugeln,Geschossen dar.
Mag ja sein und ich will dir nichts unterstellen, wie David. Trotzdem ändert das relativ wenig. Du brauchst bei deiner Kamera einen Positionsvektor, der den Ort der Kamera beschreibt und einen LookAtVektor, der beschreibt, wo die Kamera hinschaut. Bei einem Sprung nimmst du nur die entsprechenden Änderungen am Positionsvektor vor. Wo der Spieler hinschaut ist ja relativ egal.
Ich weis allerdings nicht wie man "BodenNichtMitSpielfigurVerbunden" berechnet.
Öhm ja...
Also du könntest eine Physik-Engine verwenden. Oder du schreibst dir schnell eine
Oder du machst es etwas unsauberer ohne alles
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
|
bool CheckCollision(Object1, Object2)
{
if(Object1->getPosition().x - Object1->getRadius() >=
Object2.GetPosition().x - Object2->getRadius() &&
Object1->getPosition().x + Object1->getRadius() <=
Object2->getPosition().x + Object2->getRadius() && /*Und so weiter für y und z */)
{
return true;
}
}
|
Und dann fragst du in der Move Funktion eben die Kollision der Objekte ab und tust dann was dir beliebt.
Radius ist in dem Fall ne Float Variable. Das geht natürlich nur, wenn das Objekt ne Kugel ist, wenn es ein Würfel ist, dann musst du halt dementsprechend einen Vector3 Size erstellen und dann mit getSize().x/y/z arbeiten.
Man sieht schon den Nachteil, wenn du Objekte verschidener Formen hast, wird das ganze recht kompliziert. Geschweige denn, wenn du Objekte hast, die über die Grundobjekte hinaus gehen.
Außerdem wird die Mthode sehr schnell unübersichtlich.