Autophysik - Driver Demo

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

onkelz89

Betreff: Autophysik - Driver Demo

BeitragDo, Jul 26, 2007 14:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

hab mir schon die Forumsuche zu Herzen genommen und auch Google mehrmals befragt. Ich finde nur hilfreiches zu 2D.

Die Driver Demo hab ich schon leicht verändert...
Aber es hängt ganz klar an 2 Punkten:

1- Das Auto hat in der Variante keine Achsen (Front und Heck) Wo man einen "Drehkreis" beim Drift drumziehen kann.

2- Ich versteh das mit den Vectoren nicht so ganz.

Vielleicht kennt jemand ein gutes Tut oder so...


Danke im Voraus

MfG Onkelz
 

Dreamora

BeitragDo, Jul 26, 2007 14:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Vektoren und Matrizen musst du Matheseiten konsultieren, das ist reine Mathematik 8te Klasse oder früher (ist eigentlich nicht schwer, ist nur Addition und Multiplikation Smile )
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

BladeRunner

Moderator

BeitragDo, Jul 26, 2007 14:14
Antworten mit Zitat
Benutzer-Profile anzeigen
zu 1: Darum ist es auch schlecht einen Fremdcode hinbiegen zu wollen. Es wäre einfacher Dir was von grund auf zu erstellen anstatt hier mühsam workarounds zu suchen.
zu 2.: Vektorrechnung ist weit verbreitet. www.google.de platzt vor Ergebnissen.
Ein paar nette Mathematikseiten gibt es da auch. Sei kreativ und suche...
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Lunatix

BeitragDo, Jul 26, 2007 17:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Auch wenns OT ist, aber ich hatte in der 8ten klasse _keine_ Vektoren und/oder Matrizen... nur leider bin ich auch zu faul, mir das anzuschauen... nunja und als Metallbauer brauch ichs nicht oO
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

skey-z

BeitragDo, Jul 26, 2007 18:51
Antworten mit Zitat
Benutzer-Profile anzeigen
auch Ot:

Vektoren hatte ich erst im Studium, also noch nicht mal in der Oberstufe, deshalb sollte man nicht davon ausgehen, dass jeder 15/16 jährige diese Sache schon beherrscht.

b2t
ne einfache Fahrphysik kannst du dir auch mit Sin/Cos erstellen, ist zwar nicht das Nonplusultra, aber für den Anfang reichts und hinterher kann man es immer noch ausbauen.
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter
 

Dreamora

BeitragDo, Jul 26, 2007 19:36
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm ok ... wir hattens 2tes Jahr Gymi hier in der Schweiz.

Aber selbst wenn: Wers nutzen will muss seine Werkzeuge erlernen oder es halt nicht nutzen. Mag hart klingen aber so ist das nunmal.
Physik setzt nunmal grundlegend auf Vektormathematik auf (Matrizen nicht Mal umbedingt zumindest nicht wenn man ineffizienten Code auch nocht nutzt), von daher ist sie Grundlagenwissen was man vor der Nutzung von physikalischen "Fertigsources" zu beherrschen hat (nicht sollte, sondern muss)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

onkelz89

BeitragDo, Jul 26, 2007 20:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay, habs mir nochmal grad angeschaut... ist ech nicht schwer...
Bei der Driverdemo wird der Höhenunterschied zwischen den Reifen gemessen und dem entsprechend das Auto "gedreht".

Erst für Links und Rechts dann für Front und Heck.

Ok, soweit...

Aber was oben gesagt wurde vonwegen man sollte lieber was eigenes machen... Ja schon klar nur muss ich erst das Sample kapieren Wink nunja jetz wo dies der Fall ist werde ich mir gedanken machen und hoffentlich bald den Erfolg posten Razz

Danke für die Antworten

Markus2

BeitragFr, Jul 27, 2007 12:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Damit sich das Auto um irgendein Punkt dreht kannst du nen Pivot
ans Auto hängen und den drehen mit TurnEntity .
Statt nen Pivot tuts auch erstmal nen Cube damit du siehst wo der Punkt ist .
 

onkelz89

BeitragSo, Jul 29, 2007 10:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist ne gute Idee - wobei ich auch einen anderen Ansatz hatte... Ich poste ihn hier mal und ich hoffe es gibt noch Verbesserungsvorschläge Wink

Code: [AUSKLAPPEN]
Global info1$="Driver"

Include "../start.bb"

spuren=1

Type s;spur
Field x#
Field y#
Field z#
Field live
Field obj
End Type

Const GRAVITY#=-.01

Const BODY=1,WHEEL=2,SCENE=3

Collisions BODY,SCENE,2,3
Collisions WHEEL,SCENE,2,3

terr=LoadTerrain( "heightmap_256.bmp" )
ScaleEntity terr,1000/TerrainSize(terr),70,1000/TerrainSize(terr)
TerrainDetail terr,1000,True
TerrainShading terr,True
PositionEntity terr,-500,0,-500
tex=LoadTexture( "terrain-1.jpg" )
pic=LoadImage( "terrain-1.jpg" )
ScaleTexture tex,50,50
EntityTexture terr,tex
EntityType terr,SCENE

car=LoadMesh( "car.x" )
ScaleMesh car,1,1,-1
FlipMesh car
FitMesh car,-1.5,-1,-3,3,2,6
PositionEntity car,0,70,0
EntityShininess car,1
EntityType car,BODY


Global wheels[4]

cnt=1
For z#=1.5 To -1.5 Step -3
For x#=-1 To 1 Step 2
   wheels[cnt]=CreateSphere( 8,car )
   EntityAlpha wheels[cnt],.5
   ScaleEntity wheels[cnt],.5,.5,.5
   EntityRadius wheels[cnt],.5
   PositionEntity wheels[cnt],x,0,z
   EntityType wheels[cnt],WHEEL
   cnt=cnt+1
Next
Next

light=CreateLight()
TurnEntity light,45,45,0

target=CreatePivot( car )
PositionEntity target,0,5,-12

camera=CreateCamera()
CameraClsColor camera,0,128,255

speed#=0
x_vel#=0:prev_x#=EntityX( car )
y_vel#=0:prev_y#=EntityY( car )
z_vel#=0:prev_z#=EntityZ( car )

counter=0
rich=0

While Not KeyHit(1)

   For s.s = Each s
      s\live=s\live-1
      If s\live<1 Then FreeEntity s\obj Delete s.s
   Next

   ;align car to wheels
   zx#=(EntityX( wheels[2],True )+EntityX( wheels[4],True ))/2
   zx=zx-(EntityX( wheels[1],True )+EntityX( wheels[3],True ))/2
   zy#=(EntityY( wheels[2],True )+EntityY( wheels[4],True ))/2
   zy=zy-(EntityY( wheels[1],True )+EntityY( wheels[3],True ))/2
   zz#=(EntityZ( wheels[2],True )+EntityZ( wheels[4],True ))/2
   zz=zz-(EntityZ( wheels[1],True )+EntityZ( wheels[3],True ))/2
   AlignToVector car,zx,zy,zz,1
   
   zx#=(EntityX( wheels[1],True )+EntityX( wheels[2],True ))/2
   zx=zx-(EntityX( wheels[3],True )+EntityX( wheels[4],True ))/2
   zy#=(EntityY( wheels[1],True )+EntityY( wheels[2],True ))/2
   zy=zy-(EntityY( wheels[3],True )+EntityY( wheels[4],True ))/2
   zz#=(EntityZ( wheels[1],True )+EntityZ( wheels[2],True ))/2
   zz=zz-(EntityZ( wheels[3],True )+EntityZ( wheels[4],True ))/2
   AlignToVector car,zx,zy,zz,3
   
   ;calculate car velocities   
   cx#=EntityX( car ):x_vel=cx-prev_x:prev_x=cx
   cy#=EntityY( car ):y_vel=cy-prev_y:prev_y=cy
   cz#=EntityZ( car ):z_vel=cz-prev_z:prev_z=cz
   
   ;resposition wheels
   cnt=1
   For z=1.5 To -1.5 Step -3
   For x=-1 To 1 Step 2
;      PositionEntity wheels[cnt],0,0,0
;      ResetEntity wheels[cnt]
      PositionEntity wheels[cnt],x,-1,z
      cnt=cnt+1
   Next
   Next
   
   
   If speed<=.1 Then drifting1=0 drifting2=0
   If drifting1>0 Then
      drifting1=drifting1-1
      driftcounter1#=driftcounter1#+.05
      speed=speed-0.01
      TurnEntity car,0,speed*driftcounter1,0;hier bin ich grade dabei zu versuchen was zu ändern an dem gleichmäßigen driften (soll immer stärker werden)
      
      
      
      If spuren=1 Then
      s.s = New s
      s\x = EntityX( wheels[3],1 )
      s\y = EntityY( wheels[3],1 )
      s\z = EntityZ( wheels[3],1 )
      s\live = 150
      s\obj = CreateSphere(8)
      PositionEntity s\obj,s\x,s\y,s\z
      ScaleEntity s\obj,.4,.4,.4
      EntityColor s\obj,0,0,0
      
      s.s = New s
      s\x = EntityX( wheels[4],1 )
      s\y = EntityY( wheels[4],1 )
      s\z = EntityZ( wheels[4],1 )
      s\live = 150
      s\obj = CreateSphere(8)
      PositionEntity s\obj,s\x,s\y,s\z
      ScaleEntity s\obj,.4,.4,.4
      EntityColor s\obj,0,0,0
      EndIf
   Else
      driftcounter1=1
   EndIf
   If drifting2>0 Then
      drifting2=drifting2-1
      TurnEntity car,0,-(speed*2),0
      
      If spuren=1 Then
      s.s = New s
      s\x = EntityX( wheels[3],1 )
      s\y = EntityY( wheels[3],1 )
      s\z = EntityZ( wheels[3],1 )
      s\live = 150
      s\obj = CreateSphere(8)
      PositionEntity s\obj,s\x,s\y,s\z
      ScaleEntity s\obj,.4,.4,.4
      EntityColor s\obj,0,0,0
      
      s.s = New s
      s\x = EntityX( wheels[4],1 )
      s\y = EntityY( wheels[4],1 )
      s\z = EntityZ( wheels[4],1 )
      s\live = 150
      s\obj = CreateSphere(8)
      PositionEntity s\obj,s\x,s\y,s\z
      ScaleEntity s\obj,.4,.4,.4
      EntityColor s\obj,0,0,0
      EndIf
   EndIf

   ;move car
   If KeyDown(203) Then
      If speed>0 Then 
         TurnEntity car,0,speed*2,0
          counter1=counter1+1
         If counter1>30 Then drifting1=drifting1+2
      Else
         counter1=0
      EndIf
   Else
      counter1=0
   EndIf
   If KeyDown(205) Then
      If speed>0 Then 
         TurnEntity car,0,-speed*2,0
          counter2=counter2+1
         If counter2>30 Then drifting2=drifting2+2
      Else
         counter2=0
      EndIf
   Else
      counter2=0
   EndIf
   
   If EntityCollided( car,SCENE )
      If KeyDown(200)
         speed=speed+.02
         If speed>.7 speed=.7
      Else If KeyDown(208)
         speed=speed-.02
         If speed<-.5 speed=-.5
      Else
         speed=speed*.99
      EndIf
      MoveEntity car,0,0,speed
      TranslateEntity car,0,GRAVITY,0
   Else
      TranslateEntity car,x_vel,y_vel+GRAVITY,z_vel
   EndIf

   ;update camera
   If speed>=0   
      dx#=EntityX( target,True )-EntityX( camera )
      dy#=EntityY( target,True )-EntityY( camera )
      dz#=EntityZ( target,True )-EntityZ( camera )
      TranslateEntity camera,dx*.1,dy*.1,dz*.1
   EndIf
   PointEntity camera,car
   
   DrawImage pic,0,0
   count=count+1
   If count>50 Then count=0
   If count>10 Then
   Text 10,10,"D      D      D      D      D      D      D      "
   Text 10,30,"   D      D      D      D      D      D      D   "
   Text 10,50,"D      D      D      D      D      D      D      "
   Text 10,70,"   D      D      D      D      D      D      D   "
   Text 10,90,"D      D      D      D      D      D      D      "
   Text 10,110,"   D      D      D      D      D      D      D   "
   Text 10,130,"D      D      D      D      D      D      D      "
   Text 10,150,"   D      D      D      D      D      D      D   "
   Text 10,180,"D      D      D      D      D      D      D      "
   Text 10,210,"   D      D      D      D      D      D      D   "
   Text 10,230,"D      D      D      D      D      D      D      "
   Text 10,250,"   D      D      D      D      D      D      D   "
   EndIf
   If count>20 Then
   Text 10,10,"DE     DE     DE     DE     DE     DE     DE     "
   Text 10,30,"   DE     DE     DE     DE     DE     DE     DE  "
   Text 10,50,"DE     DE     DE     DE     DE     DE     DE     "
   Text 10,70,"   DE     DE     DE     DE     DE     DE     DE  "
   Text 10,90,"DE     DE     DE     DE     DE     DE     DE     "
   Text 10,110,"   DE     DE     DE     DE     DE     DE     DE  "
   Text 10,130,"DE     DE     DE     DE     DE     DE     DE     "
   Text 10,150,"   DE     DE     DE     DE     DE     DE     DE  "
   Text 10,180,"DE     DE     DE     DE     DE     DE     DE     "
   Text 10,210,"   DE     DE     DE     DE     DE     DE     DE  "
   Text 10,230,"DE     DE     DE     DE     DE     DE     DE     "
   Text 10,250,"   DE     DE     DE     DE     DE     DE     DE  "
   EndIf
   If count>30 Then
   Text 10,10,"DEM    DEM    DEM    DEM    DEM    DEM    DEM    "
   Text 10,30,"   DEM    DEM    DEM    DEM    DEM    DEM    DEM "
   Text 10,50,"DEM    DEM    DEM    DEM    DEM    DEM    DEM    "
   Text 10,70,"   DEM    DEM    DEM    DEM    DEM    DEM    DEM "
   Text 10,90,"DEM    DEM    DEM    DEM    DEM    DEM    DEM    "
   Text 10,110,"   DEM    DEM    DEM    DEM    DEM    DEM    DEM "
   Text 10,130,"DEM    DEM    DEM    DEM    DEM    DEM    DEM    "
   Text 10,150,"   DEM    DEM    DEM    DEM    DEM    DEM    DEM "
   Text 10,180,"DEM    DEM    DEM    DEM    DEM    DEM    DEM    "
   Text 10,210,"   DEM    DEM    DEM    DEM    DEM    DEM    DEM "
   Text 10,230,"DEM    DEM    DEM    DEM    DEM    DEM    DEM    "
   Text 10,250,"   DEM    DEM    DEM    DEM    DEM    DEM    DEM "
   EndIf
   If count>40 Then
   Text 10,10,"DEMO   DEMO   DEMO   DEMO   DEMO   DEMO   DEMO   "
   Text 10,30,"   DEMO   DEMO   DEMO   DEMO   DEMO   DEMO   DEMO"
   Text 10,50,"DEMO   DEMO   DEMO   DEMO   DEMO   DEMO   DEMO   "
   Text 10,70,"   DEMO   DEMO   DEMO   DEMO   DEMO   DEMO   DEMO"
   Text 10,90,"DEMO   DEMO   DEMO   DEMO   DEMO   DEMO   DEMO   "
   Text 10,110,"   DEMO   DEMO   DEMO   DEMO   DEMO   DEMO   DEMO"
   Text 10,130,"DEMO   DEMO   DEMO   DEMO   DEMO   DEMO   DEMO   "
   Text 10,150,"   DEMO   DEMO   DEMO   DEMO   DEMO   DEMO   DEMO"
   Text 10,180,"DEMO   DEMO   DEMO   DEMO   DEMO   DEMO   DEMO   "
   Text 10,210,"   DEMO   DEMO   DEMO   DEMO   DEMO   DEMO   DEMO"
   Text 10,230,"DEMO   DEMO   DEMO   DEMO   DEMO   DEMO   DEMO   "
   Text 10,250,"   DEMO   DEMO   DEMO   DEMO   DEMO   DEMO   DEMO"
   EndIf
   If count=11 Or count=21 Or count=31 Or count=41 Or count=1 Then   CopyRect 0,0,256,256,0,0,0,TextureBuffer( tex )
      
   UpdateWorld
   RenderWorld
   
   Text 10,10,EntityX(car,1)+","+EntityY(car,1)+","+EntityZ(car,1)
   

   
   Flip
Wend

End


Ihr könnt ja einfach in den Driver Ordner bei Samples 3D unter Mak diesen Code einbinden (Backup vorher Wink )

Die Reifenspuren sind auch nur momentan damit ich sehe wie stark er ausbricht.

PS: Lasst euch durch das DEMO nicht stören Razz kann man ausschalten einfach bei Code: [AUSKLAPPEN]
If count=11 Or count=21 Or count=31 Or count=41 Or count=1 Then   CopyRect 0,0,256,256,0,0,0,TextureBuffer( tex )


ein ; davor

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group