Ich habe diese Woche bei meinem Ferienjob Nachtschicht und daher viel Zeit zum nachdenken. und da habe ich mich gefragt:
Wenn ich bei einem normalen 3D-Spiel vor eine Wand laufe, dann bleibe ich ja nicht unbedingt zu 100% stehen. Also wenn ich z.B. im 45° Winkel davor renne, läuft er langsamer und entsprechend der Oberflächenrichtung weiter.
Wie realisiere ich so was?
Derzeit läuft meine Bewegungskontrolle so ab:
- Tastendruckabfrage
- entsprechend der Taste laufen
- liegt Kollision vor?
- nein -> alles kann so bleiben
- ja ->zurücksetzen
Die Kollisionsabfrage läuft dabei im ersten schritt über einen umschließenden Würfel und im zweiten über eine schleife, die für jeden Punkt des einen Körpers checkt ob er hinter den Ebenen des anderen liegt [if (Punkt * n < Ebenenpunkt * n)]. Wenn einer oder mehrere Punkte hinter allen ebenen liegen/t, habe ich Kollision.
Ist der Ansatz korrekt und nur zu erweitern oder muss ich die Sache ganz anders angehen?