Beschleunigung & Abbremsen

Übersicht BlitzBasic Blitz3D

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

 

mDave

BeitragSo, Aug 30, 2009 19:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Speed muss eine Float sein und die Punkte bei KeyDown müssen ersetzt werden.

Goodjee

BeitragSo, Aug 30, 2009 19:34
Antworten mit Zitat
Benutzer-Profile anzeigen
oder du setzt irgendwo ein end, das verursacht bei unsachgemäßer benutzung auch fehlfunktionen
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

noobyblaster

BeitragSo, Aug 30, 2009 19:35
Antworten mit Zitat
Benutzer-Profile anzeigen
naja also das auto fährt schon nach hinten aber eben wie eine schnecke Rolling Eyes
Projekt: Crazy Racedriver [vorübergehend eingestellt]
Genre: Rennspiel
Fortschritt: ca. 60%

mpmxyz

BeitragSo, Aug 30, 2009 23:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm... Das ist aber seltsam.
Schicke mal den Code, in dem der Fehler stecken sollte.
Aber bei meinem Code wird die Brems-Ergänzungen nur ohne gedrückte Taste ausgeführt...
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

noobyblaster

BeitragMo, Aug 31, 2009 14:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist der komplette code:

Code: [AUSKLAPPEN]
Graphics3D 640,480,16,1

Global timer=CreateTimer(60)

SetBuffer BackBuffer()

player=LoadMesh("Meshes\Indycar3.3ds")
PositionEntity player,400,40,300
EntityType player,2
RotateMesh player,180,0,180

camera=CreateCamera(player)
PositionEntity camera,0,4,-10



l5=CreateLight(2)
PositionEntity l5,250,230,300
RotateEntity l5,90,0,0
EntityParent l5,m


st=LoadTexture("Texturen\wolken.jpg")
ScaleTexture st,0.1,0.1

skybox=CreateSphere ()
FlipMesh skybox
EntityType skybox,1
EntityTexture skybox,st
ScaleEntity skybox ,500,550,500
EntityOrder skybox,1
PositionEntity skybox,200,0,200
EntityFX skybox,1
      

u=CreatePlane()
PositionEntity u,0,0,0
EntityAlpha u,0.0
EntityType u,1

terrain=LoadMesh("Meshes\Rennstrecke.b3d")
PositionMesh terrain,250,40,300
EntityType terrain,1
EntityFX terrain,1


Collisions 2,1,2,2

Boost#=5




While Not KeyDown(1)




If KeyDown( 200 )=True Then
speed#=speed#+0.002
EndIf
If KeyDown(208)
speed# = speed# - 0.035
EndIf


MoveEntity player,0,0,speed#
If speed# > 2 speed# = 2
If speed# < -0.5 speed# = -0.5

If KeyDown(200)
If speed# < 0 speed# = speed# + 0.01
Else
If speed# > 0 Then speed# = speed# - 0.004 Else speed# = 0
If speed# > 0 speed# = speed# - 0.004

EndIf

If KeyDown(200)=True And KeyDown(57)=True And boost# > 0 And speed# < 2 Then
speed#=speed#+0.05
boost#=boost#-0.25
End If

If speed#=2 And boost# < 10 Then boost#=boost#+0.01
If boost# < 0 Then boost# = 0
If boost# > 10 Then boost# = 10

If KeyDown( 205 )=True Then TurnEntity player,0,-1.5,0
If KeyDown( 203 )=True Then TurnEntity player,0,1.5,0




 

RotateMesh skybox,0,-0.02,0

TranslateEntity player,0,-0.3,0



RenderWorld

UpdateWorld

Text 10,10, "Speed: "+speed#
Text 10,25, "Boost: "+boost#

Flip

Wend

End 


Und das ist der Teil mit dem Beschleunigen und so :

Code: [AUSKLAPPEN]
Boost#=5




While Not KeyDown(1)




If KeyDown( 200 )=True Then
speed#=speed#+0.002
EndIf
If KeyDown(208)
speed# = speed# - 0.035
EndIf


MoveEntity player,0,0,speed#
If speed# > 2 speed# = 2
If speed# < -0.5 speed# = -0.5

If KeyDown(200)
If speed# < 0 speed# = speed# + 0.01
Else
If speed# > 0 Then speed# = speed# - 0.004 Else speed# = 0
If speed# > 0 speed# = speed# - 0.004

EndIf

If KeyDown(200)=True And KeyDown(57)=True And boost# > 0 And speed# < 2 Then
speed#=speed#+0.05
boost#=boost#-0.25
End If

If speed#=2 And boost# < 10 Then boost#=boost#+0.01
If boost# < 0 Then boost# = 0
If boost# > 10 Then boost# = 10
Projekt: Crazy Racedriver [vorübergehend eingestellt]
Genre: Rennspiel
Fortschritt: ca. 60%

Xeres

Moderator

BeitragMo, Aug 31, 2009 14:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du mehrfach Keydown(200) abfragst, kannst du nicht entscheiden welcher Codeblock arbeitet wie er soll...
Hast du es schon mal mit simpler Reibung versucht?
Code: [AUSKLAPPEN]
If KeyDown(200) Then
   speed# = speed# + 0.01
Else
   speed# = speed# * 0.99 ;<--- nach belieben anpassen
   If speed# < 0.01 Then speed# = 0
EndIf
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

noobyblaster

BeitragMo, Aug 31, 2009 14:31
Antworten mit Zitat
Benutzer-Profile anzeigen
nein das hab ich noch nicht versucht
Projekt: Crazy Racedriver [vorübergehend eingestellt]
Genre: Rennspiel
Fortschritt: ca. 60%
 

Meik

BeitragMo, Aug 31, 2009 16:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab das damals in der BMax Demo so gelöst

Code: [AUSKLAPPEN]
If KeyDown( KEY_UP )
         If p.speed < 3
            p.speed :+ p.accel
         Else
            p.speed = 3
         EndIf
      Else
         If p.speed > 0
            p.speed :- p.force
            If p.speed < 0 Then p.speed = 0
         EndIf
      End If
      
      If KeyDown( KEY_DOWN )
         If p.speed > -1
            p.speed :- p.break
         Else
            p.speed = -1
         EndIf
      Else
         If p.speed < 0
            p.speed :+ p.force
            If p.speed > 0 Then p.speed = 0
         EndIf
      End If


müsste in Blitz3D ungefähr so aussehen: ( nicht getestet )

Code: [AUSKLAPPEN]
If KeyDown( 200 )
   If speed# < 3
      speed# = speed# + accelerate# ;accelerate = Beschleunigung
   Else
      speed# = 3
   EndIf
Else
   If speed# > 0
      speed# = speed# - force# ;force = Kraft die auf den Wagen einwirkt zum automatischem abbremsen
      If speed# < 0 Then speed# = 0
   EndIf
End If
      
If KeyDown( 208 )
   If speed# > -1
      speed# = speed# - break# ;break = Bremskraft
   Else
      speed# = -1
   EndIf
Else
   If speed# < 0
      speed# = speed# + force#
      If speed# > 0 Then speed# = 0
   EndIf
End If


Ist vielleicht nicht das Optimale an Code weil ich mein Code so aufbaue das er hauptsächlich funtioniert und nicht unbedingt schnell ist ^^ Vielleicht kannst du ja damit anfangen Smile

Edit:
Ich sollte vielleicht noch dazuschreiben was ich für Werte hatte damit man sich was drunter vorstellen kann:

speed# = 0
break# = 0.05
accelerate# = 0.02
force# = 0.02

Wenn eine erklärung gewünscht bitte sagen weil ich denke das stückchen Code ist selbsterklärend oder? Smile

noobyblaster

BeitragMo, Aug 31, 2009 18:49
Antworten mit Zitat
Benutzer-Profile anzeigen
ja das spricht für sich Wink
Projekt: Crazy Racedriver [vorübergehend eingestellt]
Genre: Rennspiel
Fortschritt: ca. 60%

Goodjee

BeitragMo, Aug 31, 2009 19:02
Antworten mit Zitat
Benutzer-Profile anzeigen
und ist exakt das gleiche was schon vorher alle leute gepostet haben Wink
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

noobyblaster

BeitragMo, Aug 31, 2009 20:09
Antworten mit Zitat
Benutzer-Profile anzeigen
naja......


und wie kann ich das einbauen das dass auto langsamer fährt wenn es bergauf geht und schneller wenn es bergab geht? Embarassed
Projekt: Crazy Racedriver [vorübergehend eingestellt]
Genre: Rennspiel
Fortschritt: ca. 60%

Goodjee

BeitragMo, Aug 31, 2009 20:29
Antworten mit Zitat
Benutzer-Profile anzeigen
http://de.wikipedia.org/wiki/Hangabtriebskraft


die hangabtriebskraft ergibt sich aus dem winkel in dem gefahren wird und der gravitation und wirkt bremsend/beschleunigend auf dein auto


übertragen auf dein spiel könntest du etwas ala

geschwindigkeit=geschwindigkeit+sin(winkel)*intensivität

machen
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

noobyblaster

BeitragDi, Sep 01, 2009 16:01
Antworten mit Zitat
Benutzer-Profile anzeigen
axo ok dankeeee
Projekt: Crazy Racedriver [vorübergehend eingestellt]
Genre: Rennspiel
Fortschritt: ca. 60%

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group