Problem mit Sliden bei Kanten
-
Hallo!
Ich habe meinen Slideeffekt in meinem EgoShooter so realisiert:Wenn Kollision ist, überprüfe ich welche aller kollidierenden Polygone am nahsten zu meinem Objektmittelpunkt ist, damit ich weiß entlang welcher Ebene ich sliden muss. Dann renne ich in die Ebene rein und schau welcher der Punkte meiner Box (die das Model umgibt) am weitesten von der Ebene entfernt ist, diesen Betrag gehe ich dann entlang des Normalvektors zurück. So kann ich ganz gut an einer Wand entlangsliden, nur wenn ich bei einer Box z.b. an einer Kante entlangslide und zur Ecke kommt zuckt meine Spielfigur die ganze Zeit hin und her. Ich nehme an (bzw. bin mir sicher), es wird versucht an der nächsten Kante entlangzusliden und dann direkt im nächsten Anlauf wieder an der Kante an der ich im Moment noch slide. Doch wie bekomme ich das weg dass ich einfach die Kante zu Ende slide und nur noch weitersliden würde wenn es wirklich möglich ist (z.b. weiterführende Kante eines weiteren Hindernisses). Welche Überprüfungen soll ich da am Besten anstellen? Vielleicht wenn die Slideebene wechselt schauen...ja was schauen?
Über geistreiche Tipps würde ich mich sehr freuen.
Kevin
-
Mhhhh... wenn Du Kollision feststellst mußt Du halt im selben (!) Frame nochmals alle anderen Ebenen testen. Falls die Dich wieder zurückschubsen wollen, stoppen, bzw. den Kombinationsvektor zurückgehen. Falls Du dann immer noch "in der Wand" hängst, mach' es wie bei Duke 3D: Laß den Spieler zerplatzen!!
-
Verstehst du mein Problem richtig? Der meint einfach er darf die nächste Ebene als Slideebene verwenden obwohl er die noch nicht verwenden darf...das muss ich irgendwie verhindern...nur wie? Wenn ich ihn dann einfach stoppe, slidet er nicht weiter und das will ich nicht...er soll ja eine Ebene eines Quaders fertigsliden können!!!
Gibt es, wenn mein Playermodel von einer großen Box umgeben ist, eigentlich ne andere Möglichkeit die Slidingplane zu finden, als die des kollidierenden Polygons zu verwenden?
-
Surkevin schrieb:
Verstehst du mein Problem richtig? Der meint einfach er darf die nächste Ebene als Slideebene verwenden obwohl er die noch nicht verwenden darf...das muss ich irgendwie verhindern...nur wie? Wenn ich ihn dann einfach stoppe, slidet er nicht weiter und das will ich nicht...er soll ja eine Ebene eines Quaders fertigsliden können!!!
Gibt es, wenn mein Playermodel von einer großen Box umgeben ist, eigentlich ne andere Möglichkeit die Slidingplane zu finden, als die des kollidierenden Polygons zu verwenden?
Axo, nee, ich dachte das Hin- und Herspringen willst Du nicht mehr.
Zu dem Slide-Problem: Der Bewegungsvektor des Players läuft meinetwegen schräg in die Wand hinein, Du mußt halt den Teil kappen, der nicht orthogonal zu dem Normalenvektor der Wand verläuft.
Zudem könntest Du Zylinder als Bounding-Volume nehmen, das würde in diesem Fall die Abstandsfindung simplifizieren.[EDIT] Sobald der Bew.Vek. natürlich eine andere Wand schneidet, mußt Du gegen den neuen Normalenvektor checken...