Steigung
Übersicht

![]() |
AnanasBetreff: Steigung |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi
Mein Problem derzeit ist, dass meine Figur (B3D) sehr steile Wände auf dem Terrain hochlaufen kann, was ich aber nicht will^^ Momentan platziere ich sie einfach immer mit TerrainY... Weiss jemand wie ich es hinkriege dass die Figur z.b. ab 50% Steigung nicht hochlaufen kann? Danke mfg |
||
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du fragst die jetztige Steigung ab und die Steigung auf die es käme, wenn es weiterginge. Dann vergleichst du sie, und wenn es die Steigung hinaufgehen können soll, kannst du es mit MoveEntity weiterverschieben. | ||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
![]() |
Ananas |
![]() Antworten mit Zitat ![]() |
---|---|---|
Doofe Frage aber wie erhalte ich denn die momentane Steigung? | ||
Blitzjockey |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Versuche den Normal von der neue Polygon/Dreieck heraus zu finden. Der Y-wert sagt hier was aus über der Neigungsgrad von der Fläche. | ||
![]() |
Moep |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mathematisch nicht sehr raffiniert, müsste aber trotzdem klappen und schnell genug sein:
Pivot erstellen mit Figur als Parent Pivot nen stückchen nach vorne Bewegen Pivot auf Terrain Höhe setzen Jetzt kannst du ganz einfach gucken wie die Differenz zwischen der Figurhöhe und der Pivothöhe ist. Hoffe das war jetzt nicht völlig falsch , bin schon bisl müde ![]() mfg |
||
Hardstyle Schleichwerbung:
http://www.youtube.com/user/Hackepeter42 Achtung: Suchtgefahr! moep123.ohost.de |
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab blödsinn gesagt. Nicht die momentane Steigung, sondern Position(Höhe). Wenn du die jetztige Höhe (nehmen wir mal an 22) und die Höhe nimmst, auf die die Figur kommen würde (nehmen wir an 26), dann kannst du die durcheinander dividieren 22/26. Daraus könntest du den Kehrwert bilden und mit 100 multiplizieren und du hättest die Steigung in Prozent, ... wenn ich mich nicht vertan habe.
Edit: Jetzt habe ich wieder vergessen TerrainY zu erwähnen... |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
- Zuletzt bearbeitet von Thunder am Mo, Mai 31, 2010 14:44, insgesamt einmal bearbeitet
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mach es doch mit TerrainY..
Du nimmst TerrainY von deiner Jetzigen Position und von der, zu der du im nächsten schritt gehen würdest. Dann musst du die nur noch vergleichen, also TerrainNewY - TerrainY und dann sagst du einfach, wenn die Differenz < als 0.5 dann wird bewegt, sonst nicht. mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
Ananas |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke für die Hilfe, es funktioniert aber nur halb richtig...
Wenn man frontal auf eine steile Wand zugeht dann kommt man nicht rauf, aber wenn man schräg reinläuft dann kommt man rauf, weil ja der Winkel kleiner ist und somit die Differenz zwischen momentaner Höhe und der Höhe auf die die Figur kommen würde, kleiner ist... Hat da zufälligerweise jemand eine Lösung parat? :S |
||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein.
Schick uns den code teil wo du deine Figur bewegst und dann können wir dir villeicht eine Lösung sagen ![]() mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
Ananas |
![]() Antworten mit Zitat ![]() |
---|---|---|
naja der Code ist überhaupt nicht speziell einfach à la
Code: [AUSKLAPPEN] if keydown(200) then moveentity spieler,0,0,1 ; + Tastenabfragen für Drehen Positionentity spieler ...blabla ; einfach auf y-Koord. des Terrains Ich glaub nicht dass das weiterhilft^^ Edit: geht es irgendwie herauszufinden in welche "Richtung" ein Berg schaut, dann könnte ich einfach immer die Steigung betrachten wenn der Spieler frontal auf den Berg zukäme.... |
||
Blitzjockey |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Blitzjockey hat Folgendes geschrieben: Versuche den Normal von der neue Polygon/Dreieck heraus zu finden. Der Y-wert sagt hier was aus über der Neigungsgrad von der Fläche.
jadaschauher würde der Bayer sagen... Den Normal ist, beim Terrain-mesh, der Vector welche senkrecht auf der Fläche steht, Normalisiert auf "1" |
||
![]() |
Ananas |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mmmh ja das ist vermutlich was ich brauche habs erst nur nicht verstanden weil ich mir die ganze "Mathe-Sprache" noch ned angeeignet habe...
Weisst du (oder sonstwer) denn wie ich das jetzt herausfinden kann? ![]() |
||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie ichs dir oben beschrieben habe ![]() Du hast zwei x/z Koordinaten ![]() ![]() Statt wenn man KeyDown(17) Dürckt, das dann der Player Bewegt wird, wird die x / z - Neue Position berechnet. Jetzt nimmst du davon TerrainY werte : ![]() ![]() Dann musst du die Differenz bilden : ![]() Jetzt hast du den Höhenunterschied, den der Spieler überwältigen soll, wenn er sich fortbwegen würde. Wenn du jetzt pürfst, ob der y_unterschied kleiner als ein Bestimmter wert ist, so kannst du die Figur dann bewegen. mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
Ananas |
![]() Antworten mit Zitat ![]() |
---|---|---|
@ToeB: Soweit war ich ja schon aber es funktioniert eben nicht richtig, das Problem hab ich irgendwo weiter oben schon beschrieben -> Dass diese Differenz kleiner wird wenn man schräg in eine Wand hineinläuft und somit dieser "Stopper" nicht funktioniert... | ||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja du musst ja auch dann nicht nur die Neue position setzten sondern ggf. mit Sin / cos dem winkel des spielers ausrichten
mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
Blitzjockey |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ananas hat Folgendes geschrieben: Mmmh ja das ist vermutlich was ich brauche habs erst nur nicht verstanden weil ich mir die ganze "Mathe-Sprache" noch ned angeeignet habe...
Weisst du (oder sonstwer) denn wie ich das jetzt herausfinden kann? ![]() ![]() Auf jedem Fall, schau CollisionNY mal an. BlitzJ. |
||
![]() |
Ananas |
![]() Antworten mit Zitat ![]() |
---|---|---|
Aber um den richtig auszurichten brauche ich ja auch die "Richtung" des Berges... Oder habe ich dich falsch verstanden? :S
Edit: @Blitz: Danke ich schaus mir mal an ![]() |
||
Blitzjockey |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ananas hat Folgendes geschrieben: Aber um den richtig auszurichten brauche ich ja auch die "Richtung" des Berges... Oder habe ich dich falsch verstanden? :S
Nah, in Prinzip besteht so'n Vector aus X/Z-richtung in den Horizontale und den Y-Richtung in der Vertikale. Senkrecht hoch bekommt für X/Z 0, und für Y 1. Also, der Vektor senkrecht hoch, bei eine wagerechte Ebene. 45° Steigung richtung Z wäre dementsprechend X = 0, Y = 0.707 (Sin(45°)) und Z = 0.707 (Cos(45°)) Beim Bergsteigen ist es also egal, eine Fläche mit eine Steigung größer Wert X ist nicht begehbar. Nur, um festzustellen ob Du bergsteigst oder Bergabsteigst, is der X/Z-ausrichtung durchaus interessant. Da ich annehme das Dein Figur absteigen darf/muss, solltest Du dass schon kontrollieren. Dann "darf" Dein Figur wahrscheinlich auch eine steile Ebene horizontal überqueren, bzw wird runtergeschoben. (Was, beim richtigen EntityCollide, ohnehin automatisch passiert) EDIT: Ich sehe Dein Nachricht bezog sich auf der von ToeB.. Aber ich lasse es so mal stehen. |
||
![]() |
Moep |
![]() Antworten mit Zitat ![]() |
---|---|---|
Um dieses ganze Rechnerei mit dem cos/sin weguzulassen dürfte die von mir erwähnte Pivot Methode helfen, das macht genau das was du meinst...
Wenn du ein Pivot mit Figur als Parent erstellst und das Pivot nach vorne bewegst, dann bewegt sich das Pivot nach vorne von der Figur aus gesehen, zumindest glaub ich das, hab kein B3D installiert.. mfg |
||
Hardstyle Schleichwerbung:
http://www.youtube.com/user/Hackepeter42 Achtung: Suchtgefahr! moep123.ohost.de |
Blitzjockey |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Bei der von mir beschriebene Methode braucht man kein trigonometrie. Ich habe den Sin/Cos nur dagestellt um eine Referenz zu bilden zu den X, Y und Z-werten welche man mittels CollisionsNX -NY und -NZ bekommt.
Des weiteren ist Deine Methode änlich an den von ToeB, nur das Du ein Pivot benutzt. Und damit dürfte das Effekt der gleiche sein. Wenn man "schief" auf eine Fläche zugeht, ist der relatieve Steigung niederiger, und der Figur könnte der Berg sozusagen "Hochkreuzen." Ansonsten sind Pivots aber schon eine schöne Sache, nicht nur als Drehpunkt sondern auch so wie Du sie beschrieben hast - als ein Art Sensor innerhalb den 3D-Welt von B3D, da sie alle Merkmalen einen Entity haben, ausser sein Mesh. Lg, BlitzJ. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group