Auto nicht im Stand drehen lassen?(Verbesserungsvorschläge)

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Roggi

Betreff: Auto nicht im Stand drehen lassen?(Verbesserungsvorschläge)

BeitragSa, Feb 04, 2006 9:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Also wie schon im Wip steht programmieren wir gerade ein 3D Rennspiel, wo man zwar nur in einer 3D Stadt rumfährt, aber immerhin. So und nun zu meinen Problem:
Unser Spiel basiert auf die Driver Demo. Aber da kann man das Auto auch im Stand drehen. Also man muss nicht gas geben, dafür dass es sich dreht. Sowas gibt es aber auch nicht in Wirklichkeit und deshalb wollte ich wissen wie man es einbauen könnte das man nur Kurven fahren kann oder drehen wenn man Gas gibt. Verstanden? Smile Hier ist zum abschluss noch ein Pic vom bisherigen:
user posted image

MfG Tom

:edit:
Ich war blöd ich hab einfach bei turnentity ein and keydown dazu gesetzt und es geht jetzt. Vielleicht hat ja jemand noch Ideen fürs Spiel und Tipps zum verbessern der Driver Fahrphysik. Oder wie bekomme ich eine Trägheit hin das man in den Kruven langsamer wird. Ich habs schon so wie oben probiert aber wenn man das immer weiter drückt fährt das Auto irgendwann rückwärts! DAnke
:edit/:
  • Zuletzt bearbeitet von Roggi am So, Feb 05, 2006 9:22, insgesamt einmal bearbeitet

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Feb 04, 2006 18:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du die Drehgeschwindigkeit mit der Fahrzeuggeschwindigkeit multiplizierst, dann hast du den erwünschten Effekt, daß sich das Fahrzeug nicht stehen drehen kann. Ausserdem beachtest du dann bei einer Rückwärtzfahrt den Lenkeinschlag, daß sich das Fahrzeug dann auf der gleichen Linie zurrück bewegt. Die Drosselung bei einer Geschwindigkeit kannst du aus einer berechneten Fliehkraft berechnen. Dabei auch hier die Geschwindigkeit dividieren und nicht Addieren/Subtraieren... Hier mal ein Beispiel:Code: [AUSKLAPPEN]
Graphics 800,600,0,2
SetBuffer BackBuffer()

xp#=200;X-Position
yp#=200;Y-Position
xg#=0;X-Geschwindigkeit
yg#=0;Y-Geschwindigkeit
fg#=0;Fahrzeug-Geschwindigkeit
rp#=0;Rotations-Position

fk#=0;Berechnete Fliehkraft
xpa#=0;Alte X-Position
ypa#=0;Alte Y-Position




;Hauptschleife
While Not KeyHit(1)

 ;Vorrausschauend sichern
 xpa=xp+Cos(rp)*fg
 ypa=yp+Sin(rp)*fg

 ;Tastaurabfrage
 If KeyDown(200) fg=fg+.05
 If KeyDown(208) fg=fg-.02
 If KeyDown(203) rp=rp-fg/1.4
 If KeyDown(205) rp=rp+fg/1.4

 ;Reibungswiederstand
 fg=fg/1.01

 ;X/Y-Geschwindigkeit
 xg=Cos(rp)*fg
 yg=Sin(rp)*fg

 ;Neu Positionieren
 xp=xp+xg
 yp=yp+yg

 ;Fliehkraft
 fk=Sqr((xp-xpa)^2+(yp-ypa)^2)

 ;Fliehkraft bearbeiten
 If fk > .06
  Rect 0,0,60,60,1;Hier Quitschsound!!!
   xp=xp-xg
   yp=yp-yg
   xp=xpa
   yp=ypa
 End If

 ;Werteinformationen
 Line 400,100,400+fg*50,100
 Line 400,104,400+fk*800,104

 ;Fahrzeug zeichnen
 Line xp+Cos(rp-30)*10,yp+Sin(rp-30)*10,xp+Cos(rp+30)*10,yp+Sin(rp+30)*10
 Line xp+Cos(rp+30)*10,yp+Sin(rp+30)*10,xp+Cos(rp+150)*10,yp+Sin(rp+150)*10
 Line xp+Cos(rp+150)*10,yp+Sin(rp+150)*10,xp+Cos(rp-150)*10,yp+Sin(rp-150)*10
 Line xp+Cos(rp-150)*10,yp+Sin(rp-150)*10,xp+Cos(rp-30)*10,yp+Sin(rp-30)*10

 Flip
 Cls
Wend
End
 

Roggi

BeitragSo, Feb 05, 2006 9:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo Danke für den Tipp aber mein Game ist 3D und da musst ich bloß alles auf 3 Achsen umlegen Laughing

Wer hat nun noch Tipps zur Fahrphysik oder noch andere Tipps zum Game ob man vlt. Aufträge erledigen soll, wenn ja welche und wie ihr die umsetzen wollt. Oder vlt. hat noch jemand einen Vorschlag um die Fahrphysik noch realistischer zu machen. Aber Danke schonmal ich hoffe auf ein gutes Feedback Very Happy

MfG Tom Wink

:edit:
Ich hab das mit der Steuerung jetzt so gelöst: Man hat jetzt Handbremse aber man kann wenn man Handbremse drückt nicht lenken und wenn er ausläuft(ohne Gas) bleibt er sofort stehen und lässt sich auch net lenken:
Code: [AUSKLAPPEN]
If KeyDown(203) And KeyDown(200) TurnEntity car,0,1,0
   If KeyDown(205) And KeyDown(200) TurnEntity car,0,-1,0
   If KeyDown(203) And KeyDown(208) TurnEntity car,0,-1,0
   If KeyDown(205) And KeyDown(208) TurnEntity car,0,1,0

   If EntityCollided( car,SCENE )
      If KeyDown(200)
         speed=speed+.006
         If speed>.7 speed=.8
      Else If KeyDown(208)
         speed=speed-.011
      Else If KeyDown(57)
          speed=speed-.02
         If speed<+.000 speed= +.000   
         If speed<-.5 speed=-.5
      Else
         speed=speed*.9
      EndIf
      MoveEntity car,0,0,speed

So das wars
:edit/:

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Feb 05, 2006 21:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo 0ahnung, folgendes ist schon mal keine 'Fahrphysik'...Code: [AUSKLAPPEN]
If KeyDown(203) And KeyDown(200) TurnEntity car,0,1,0
If KeyDown(205) And KeyDown(200) TurnEntity car,0,-1,0
If KeyDown(203) And KeyDown(208) TurnEntity car,0,-1,0
If KeyDown(205) And KeyDown(208) TurnEntity car,0,1,0

Was machst du, wenn der User lenkt und dabei mal nicht mit Gas gibt?

Ausserdem ist ein Auto ja kein Flugzeug. Auch in einem 3D-Autorennen fährt ein Fahrzeug auf einer Straße die 2D ist. Somit kann man 2D-Routinen genauso gut in 3D verwenden... Was da noch hinzu kommen kann, ist der Grip auf dem Boden wenn man über Hügel etc. fährt...
Code: [AUSKLAPPEN]
Graphics3D 800,600,32,1
SetBuffer BackBuffer()

camera=CreateCamera()
PositionEntity camera,0,0,-400
CameraClsColor camera,56,56,80

light=CreateLight()
RotateEntity light,60,0,0

cube=CreateCube()
ScaleEntity cube,10,20,10
EntityAlpha cube,.5

fg#=0
rg#=0


While Not KeyHit(1)

 If KeyDown(203) rg=rg+.1
 If KeyDown(205) rg=rg-.1
 If KeyDown(200) fg=fg+.1
 If KeyDown(208) fg=fg-.05

 rg=rg/1.04
 fg=fg/1.02

 MoveEntity cube,0,fg,0
 TurnEntity cube,0,0,rg*fg/2

 RenderWorld
 Flip
 Cls
Wend
End

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group