Schwerkraft Problem

Übersicht BlitzBasic Blitz3D

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

Jeck

Betreff: Schwerkraft Problem

BeitragMo, Apr 09, 2007 20:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Weis einer von euch wie man eine realistische Schwerkraft hinbekommt.
Ich lasse meine Figur nach unten bewegen. Wenn sie den Untergrund berührt bleibt sie ja stehen, wenn der Untergrund sich aber auch bewegt fellt sie hindurch.
Sie sollte sich aber mitbewegen.
Wie simulire ich also Schwerkraft

the FR3AK

BeitragMo, Apr 09, 2007 20:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde das mal so machen:

Code: [AUSKLAPPEN]
Graphics3D 800,600,32,2
SetBuffer BackBuffer()


Const wand=1,stein_col=2

cam= CreateCamera()
PositionEntity cam,0,0,-10

wall=CreatePlane()
PositionEntity wall,0,-5,0
EntityType wall,wand

stein=CreateCube()
EntityColor stein,255,0,0
PositionEntity stein,0,10,0
EntityType stein,stein_col

Collisions stein_col,wand,2,1


While Not KeyHit(1)

MoveEntity wall,1,0,0

If Not EntityCollided(stein,wand) Then
   MoveEntity stein,0,-1,0
Else
   MoveEntity stein,1,0,0
End If

UpdateWorld
RenderWorld


Flip
Wend


Ne bessere Idee hab ich net Wink

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Apr 09, 2007 21:25
Antworten mit Zitat
Benutzer-Profile anzeigen
the Freak, er wollte eine >realistische< Gravitation haben. Wie gut, dass ich dafür immer ein und den selben Code hier auf der Platte rumfliegen habe.

Code: [AUSKLAPPEN]
Graphics3D 640,480,32,2
SetBuffer BackBuffer()

xg#=0;X-Geschwindigkeit
yg#=0;Y-Geschwindigkeit
zg#=0;Z-Geschwindigkeit

camera=CreateCamera()
light=CreateLight()
cube=CreateCube()

PositionEntity camera,0,8,-12
TurnEntity light,70,0,0


;Hauptschleife
While Not KeyHit(1)

 ;Tastaturabfrage
 If KeyDown(203) xg=xg-0.01
 If KeyDown(205) xg=xg+0.01
 If KeyDown(200) zg=zg+0.01
 If KeyDown(208) zg=zg-0.01
 If KeyDown(57) If EntityY(cube)<=0 yg=.5

 ;Bewegungsanwendung
 MoveEntity cube,xg,yg,zg

 ;Änlichkeit eines
 ;Luftwiederstandes
 xg=xg*.98
 yg=yg*.98
 zg=zg*.98

 ;Gravitation
 yg=yg-0.01

 ;Billige Kollisionsabfrage
 If EntityY(cube)<0
  ;Cube auf Höhe des Bodens bringen
  PositionEntity cube,EntityX(cube),0,EntityZ(cube)
  ;Abprallen
  yg=-yg/2
 End If

 RenderWorld
 Flip
Wend
End


edit1: Blitz3D kann im übrigen keine Kollision korrekt auf bewegte Objekte durchführen. Dazu bedarf es dann einer Physikengine.^^
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Silver_Knee

BeitragMo, Apr 09, 2007 21:50
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hätte da mal eine idee die die FPS nicht gerade freuen würde aber wenn kollision nur mit einem bewegte und mirt einem stehenden geht:

player bewegen
update world
boden bewegen
update world

Renderworld

die FPS wird sich bedanken aber so bekommt man in der theorie igentlich immer nur ein bewegtes objekt

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Apr 09, 2007 22:18
Antworten mit Zitat
Benutzer-Profile anzeigen
FTC, das geht nicht, weil der Boden dann durch den Player durch geht. Oder wie meinst du das? Du kannst in Blitz kein Polygon auf ein Radius kollidieren lassen. Ausser MeshesIntersect, was aber keine Kollisionsposition erlaubt. Auch werden Kollisionen nicht gestoppt, sondern gehen 'durch'.

Was man eventuell auch machen könnte ist:
- Welt und Player in gleicher Richtung bewegen
- UpdateWorld
- Player -Eigenbewegung
- UpdateWorld

Die Methode dürfte (fals es überhaupt funktioniert) recht arg funktionieren. Welt darf sich dabei nicht drehen.

Oder einfach eine Physikengine benutzen.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Silver_Knee

BeitragMo, Apr 09, 2007 23:11
Antworten mit Zitat
Benutzer-Profile anzeigen
welchen radius????
wir reden doch vom collisionstype 2 das ist polygon auf polygon
meine methode geht zwar auch nicht das liegt yaber nicht an irgendwelchen radien das problem von blitz ist di aufeinander-zu bewegung ich denk mir das so: blitz sieht der Spieler fällt durch den Boden und speichert intern die globale 3d koordinate an der der Spieler hätte "hängenbleiben" müssen. so die erde bewegt sich nun auf den spieler zu die stelle an der die kugel hängen bleiben muss verlagert sich nach oben, blitz bekommt davon nichts mit... bei updateworld führt es an der gespeicherten stelle die kollision durch, die stelle liegt aber schon unter der erde....

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Apr 10, 2007 1:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Collisions -Type =2 ist Kugel auf Polygon. Polygon auf Polygon hat Blitz3D nicht, ausser MeshesIntersect, was aber bei einer Kollisions die Speielerbewegung nicht stoppt, sondern nur eine 1 zurück geben kann.

Es ist nicht ohne weiters möglich ein 'mitbewegen' eines Spielers auf ein bewegtem Unterground zu machen, wie Jeck am Anfang hier die Frage stellte. Es gäbe Möglichkeiten wie man sowas umgehen könnte. Die Möglichkeiten würde aber wesentliche Einschränkung mitsich bringen und das Handling auch fast unmöglich machen. Es bleibt leider nur die Möglichkeit es mit einer Physikengine zu machen. Dazu gibt es u.a. folgende:

- Devil Physic Engine http://www.dc.chat-blitz.de/de...Index.html
- Newton Game Dynamics http://www.newtondynamics.com/links.html
- Tokamak Game Physics http://www.tokamakphysics.com
- Physik Engine ODE http://www.ode.org

Mit der von Devils bin ich ganz zufrieden. Tokamak hat mir ein bisschen Probleme bereitet, kann aber auch meine damalige Unzulänglichkeit gewesen sein. Die anderen (Newton und ODE) kenne ich nicht.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Jeck

BeitragDi, Apr 10, 2007 10:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab mir jetzt die unterste Physic Engine gezogen.
kann mir fieleicht jemand sagen wie man die benutzt?

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Apr 10, 2007 10:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Für Blitz3D bräuchtest zu zumindest noch ein passenden Wrapper zu den Dlls. Also eine Art 'Übersetzer' für Blitz. Die Versionsnummern müssen dabei übereinstimmen. Meist liegt dann ein kleines Codebeispiel beim Wrapper bei...
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Jeck

BeitragDi, Apr 10, 2007 11:23
Antworten mit Zitat
Benutzer-Profile anzeigen
und woher krig ich so einen Warper und was meinst du mit die Nummern müssen übereinstümen?

Tankbuster

BeitragDi, Apr 10, 2007 12:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Also wenn du das neuste Blitz-Update hast (1.98), dann brauchst du auch den Wrapper für Version 1.98...
So hab ich das auf jeden Fall verstanden o0
Twitter
Download Jewel Snake!
Windows|Android
 

Jeck

BeitragDi, Apr 10, 2007 16:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Haben diese Warper noch irgendein besonderen Namen?
Denn ich hab gegogelt aber leider nicht das richtige gefunden.

NightPhoenix

BeitragDi, Apr 10, 2007 17:11
Antworten mit Zitat
Benutzer-Profile anzeigen
benutz doch gleich die devil physics. Ich glaube die sind auf blitz bereits abgestimmt und du brauchst kein wrapper, sondern musst die dlls nur includen.
mfg.

P.S. sie heißen wrapper, nicht warper !
 

Jeck

BeitragDi, Apr 10, 2007 19:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab nach einem download der devil physics gesucht bin zwar auf Seiner Seite gekommen. Aber eine Möglichkeit zum downloaden fand ich nicht könnt ihr mir helfen?
 

ChristianK

BeitragDi, Apr 10, 2007 19:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Geh auf www.devil-engines.net, dann auf Page, Products, Devil Physic Engine. Ganz unten auf der Seite gibts die Downloads.

NightPhoenix

BeitragDi, Apr 10, 2007 19:38
Antworten mit Zitat
Benutzer-Profile anzeigen
http://www.dc.chat-blitz.de/de...n_DPE.html
da stehen ganz unten 3 links... der letzte ist der neuste
MfG.
 

Jeck

BeitragDi, Apr 10, 2007 20:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab mir das teiel nun gezogen und alle .bb Datein gestartet aber bei allen wurde irgendetwas nicht gefunden.
Weis vieleicht einer von euch wie man das Teiel benutzt?
 

ChristianK

BeitragDi, Apr 10, 2007 20:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du die Version mit Newton verwendest, musst du dir zuerst den Newton wrapper runterladen, kA wo es den gibt ...
Oder du benutzt einfach die Version mit BlitzODE und kopierst die Userlibs in Blitz3D/userlibs.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Apr 10, 2007 20:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Nach dem entpacken der Dateien hast du u.a. ein Verzeichnis welches .decls -Dateien beinhaltet, diese Dateien musst du in dein Blitzordner ins \userlibs rein kopieren. Damit 'bringst du Blitz neue Befehle bei', diese werden dann im Code auch blau eingefärbt, wie andere Befehle auch. Dann klappt auch alles.

Falls du weitere Fragen hast, so frag. Ich finde die Beispiele allerdings etwas zu überladen, so das es recht schwer ist, sich Informationen über die Funktion der Physikengine zu holen, wobei sie echt extremst einfach sind.^^
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Jeck

BeitragDi, Apr 10, 2007 20:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab aber leider keinen .decls Datein beim Download bekommen deshalb hab ich das teiel nochmal geladen.
Aber es warn wieder keine .decls Datein drin.
Was mach ich verkert?

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group