Steigung

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Ananas

Betreff: Steigung

BeitragSo, Mai 30, 2010 20:14
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Mai 30, 2010 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Mai 30, 2010 21:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Doofe Frage aber wie erhalte ich denn die momentane Steigung?
 

Blitzjockey

BeitragSo, Mai 30, 2010 22:23
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Mai 30, 2010 22:25
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Razz


mfg
Hardstyle Schleichwerbung:
http://www.youtube.com/user/Hackepeter42

Achtung: Suchtgefahr!
moep123.ohost.de

Thunder

BeitragMo, Mai 31, 2010 13:28
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Mai 31, 2010 14:25
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Mai 31, 2010 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Mai 31, 2010 21:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein.

Schick uns den code teil wo du deine Figur bewegst und dann können wir dir villeicht eine Lösung sagen Wink

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

BeitragMo, Mai 31, 2010 21:28
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Mai 31, 2010 21:37
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Mai 31, 2010 21:43
Antworten mit Zitat
Benutzer-Profile anzeigen
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? Surprised

ToeB

BeitragMo, Mai 31, 2010 21:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie ichs dir oben beschrieben habe Wink

Du hast zwei x/z Koordinaten
Arrow x / z - Aktuelle Position
Arrow x / z - Neue Position

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 :
Arrow y_alt = TerrainY( x_alt, 0, z_alt )
Arrow y_neu = TerrainY( x_neu, 0, z_neu )

Dann musst du die Differenz bilden :
Arrow y_unterschied = y_neu - y_alt

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

BeitragMo, Mai 31, 2010 21:51
Antworten mit Zitat
Benutzer-Profile anzeigen
@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

BeitragMo, Mai 31, 2010 22:02
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Mai 31, 2010 22:05
Antworten mit Zitat
Benutzer-Profile anzeigen
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? Surprised


Very Happy Tja, auch wenn Blitz3D einem eigentlich alle Arbeit abnimmt... Vertices, Normalen und Vectoren sollte man wenigstens von der Ansatz her ein wenig verstehen. Das heisst nicht das ich sie verstanden habe bevor ich hier angefangen habe, das habe ich meistens nachher heraus gefunden.

Auf jedem Fall, schau CollisionNY mal an.

BlitzJ.

Ananas

BeitragMo, Mai 31, 2010 22:06
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Wink
 

Blitzjockey

BeitragMo, Mai 31, 2010 22:13
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Jun 01, 2010 8:04
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Jun 01, 2010 8:27
Antworten mit Zitat
Benutzer-Profile anzeigen
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.

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group