Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Jul 17, 2025 09:02

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Rutschen/Hänge an Heightmap?!
BeitragVerfasst: Do Nov 04, 2004 21:03 
Offline
DGL Member
Benutzeravatar

Registriert: Di Feb 25, 2003 15:10
Beiträge: 147
Wohnort: Koblenz a. Rhein
Hi! Hab folgende Frage:
Wie soll ichs angehen den Spieler auf meiner Heightmap rutschen zu lassen wenn er einen zu steilen Hang besteigt (so wie z.B. Battlefield das macht)
Hab bissel gegoogelt aber kam nix brauchbares bei raus.
Also ich hab mir folgendes überlegt: enteder die Spielerposition auf dem Aktuellen Triangle ermitteln dann aus der Differenz der Punkte die steile errechnen.. so dann wüsst ich schonma ob der Spieler da hoch gehen können soll oder nich.
Aber was wenn nicht ? Dann müsste er doch vom höchsten Punkt des Tris nach unten wegrutschen..
Aber wie mach ich das ? :?:

Danke ! Bye
EDIT: Hab im game für die Collision 3 Linien für die Represäntation des Players.. falls man damit was anstellen kann.. wollt ich nur ma gsagt ham ^^

_________________
mir fällt kein Spruch mehr ein für meine Signatur :( naja... :D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 04, 2004 21:33 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Okt 16, 2004 11:58
Beiträge: 70
Hmmmm.............. ....... ....... ... ... ........ ........ ............... .. Wenn du so was willst solltest du eine gute Physik Engine haben (Newton kann ich nicht so empfehlen), du solltest dann mit einer "Steil-berechnung" und einem Bodenchek bzw. Gravitychek das irgendwie hinbekommen können. Mehr kann ich dir nicht sagen, habe mir dieses Feature nie angeguckt bzw. gedacht für meine Projekte.

mfg, Sindwiller :o


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 04, 2004 21:51 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Jan 04, 2003 21:23
Beiträge: 674
Wohnort: Köln
das sollte relativ einfach anhand der Normalen der Heightmap an der entsprechenden Stelle herauszufinden sein...
die gibt ja auch die Steilheit an...
(werde vor dem gleichen Problem auch bald mal stehn, also nicht zurückhalten irgendwelche Ergebnisse zu veröffentlichen :D )

_________________
. . .


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 04, 2004 22:00 
Offline
DGL Member
Benutzeravatar

Registriert: Di Feb 25, 2003 15:10
Beiträge: 147
Wohnort: Koblenz a. Rhein
jo werd ich hier posten falls ich weiter komm nur heute nich mehr weil muss morgen früh raus ^^
hab mit den normalen auch schonma nachgedacht aber war nich sicher und wollt nich einfach drauflos rumfummeln mit den dingern.. aber dann werd ich mich da ma ran setzen! bis dann

_________________
mir fällt kein Spruch mehr ein für meine Signatur :( naja... :D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 04, 2004 22:04 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Der Spieler wird ja ständig nach unten beschleunigt. Er hat also immer wenn er auf dem Boden ist, eine Geschwindigkeit die nach unten gerichtet ist und auch eventuell nach vorne falls er gerade läuft.
Wenn man einen Geschwindigkeitsvektor v und die Normale n der Fläche hat, auf die der Spieler stößt, dann kann man die neu Geschwindigkeit so berechnen.

v2:=v-(v . n);

Wenn der Spieler sich parallel zur Fläche bewegt, dann ist v.n=0 und die ursprüngliche Geschwindigkeit bleibt erhalten. Wenn der Spieler senkrecht mit der Fläche kollidiert, dann ist v.n=v und damit v2=v-v=0.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 04, 2004 22:10 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Hmm...also mal so ne Idee:

Du nimmst den Anstieg (So heißt die Steilheit :wink: ) der Normale auf dem Feld wo dein Spieler steht.
Dann nimmst du nen Referenzwert, von dem Ziehst du den Anstieg ab. Is der Wert größer gleich 0 bleibt alles wies is.
Is der Wert kleiner Null benutzt du den als Beschleunigung entlang der Oberfläche der Highmap.

Das Problem sollte jetzt daran liegen nen Richtungsvektor zu berechnen, an dem lang gerutscht werden soll. Zwei Koordinaten hast du schon, indem du ne Senkrechte von deiner Normalen nimmst. Allerdings welche? Nun die, die nach unten zeigt :wink: ) wie du das machst, kann ich dir allerdings net sagen.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 04, 2004 23:31 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Wenn du ohnehin nur mit einer Heightmap kollidieren willst, lohnt es sich eventuell zusätzlich zu den Höheninformation noch ein weiteres Array mit den Normalvektoren der Tangentialebenen der einzelnen Punkte (lassen sich leicht über benachbarte Elemente einer Position auf der Heightmap berechnen) erstellen - damit kommst du dann völlig ohne Trianglekollision aus, und kannst jedes Objekt auf dem Boden herumrutschen lassen, wie du Lust hast.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Nov 05, 2004 18:18 
Offline
DGL Member
Benutzeravatar

Registriert: Di Feb 25, 2003 15:10
Beiträge: 147
Wohnort: Koblenz a. Rhein
Hi und danke soweit für die Antworten!

@Flash: So hab ichs auch probiert aber das is irgendwie komisch wenn der Player dann hängen bleibt...
Sieht dann so aus als würde das Game ruckeln.. Also is echt keine brauchbare Lösung aber die Idee hatte ich auch ^^
Hab halt die SpielerPosition und ne NewSpielerP gehabt und die Differenz aus der Höhe genommen dann ab nem gewissen Wert die NewSP ignoriert.. aber dann is das Game nimmer spielbar..bei Senkrechten is das sicher realistisch aber am Hang irgendwie nicht.

@Mars: Also ich hab die Normalen der verwendeten Tris bei der Heightmap in nem Array gespeichert falls du die meintest.
Ja die TriangleKollision bringt mir ja nix da ich ja weiss, auf welchem Feld sich der Spieler befindet.

@Lars: Der GeschwindigkeitsVektor ist dann die Distanz die pro Frame in die Richtung überwunden wird, in die der Vektor von der Position de Spielers entfernt ist (also die Position, an der sich der Spieler im nächsten Frame befinden wird), oder verstehe ich da was falsch ?

Bye!

_________________
mir fällt kein Spruch mehr ein für meine Signatur :( naja... :D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Nov 05, 2004 18:42 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Mit Geschwindigkeit ist eigentlich nicht die Entfernung pro Frame sondern pro Sekunde gemeint. Beim Bewegen von Objeken multipliziert man den Vektor dann ja noch mit der Dauer des Frames.

newpos:=pos+speed*frametime;
...
...
if collided then
speed:=SlideVector(speed,Normal);


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Nov 06, 2004 11:15 
Offline
DGL Member
Benutzeravatar

Registriert: Di Feb 25, 2003 15:10
Beiträge: 147
Wohnort: Koblenz a. Rhein
aso!
jo is ja logisch weil sonst würd einer der in dem game 200 frames hat da durchrushen können und einer mit 50 schleichen.
aber nochmal zu dem vektor.. das ist also die position an der der spieler bei der nächsten berechnung sein wird? also ist die geschwindigkeit gleich dem abstand von der spieler position zu dem geschwindigkeitsvektor ?
bye

_________________
mir fällt kein Spruch mehr ein für meine Signatur :( naja... :D


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.011s | 14 Queries | GZIP : On ]