Springen

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

MalteW.

Betreff: Springen

BeitragMi, Jul 20, 2005 16:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo

Ich wollte mal fragen, wie der code fürs springen geht.
Ich bekomm das nicht hin.

Ich fände es nett, wenn ihr antworten würdet.

Triton

BeitragMi, Jul 20, 2005 16:19
Antworten mit Zitat
Benutzer-Profile anzeigen
"den Code fürs Springen" gibt es nicht.

Das Prinzip ist relativ einfach. Da ich aber meist nur mit bb2d arbeite, hier auch nur ein Bsp darin:

Code: [AUSKLAPPEN]

;** kleines rumgespringe
;** 9.5.2005 by Triton
Graphics 800,600,32,2

SetBuffer BackBuffer()

x=0
y=500
maxh=200     ;sprunghöhe
v=3         ;wie schnell verläuft der sprung

While Not KeyDown (1)
   If jump=0 And KeyDown(57) Then jump=1
   If jump=1 Then a=a+v
   If a>180 Then jump=0:a=0
   If KeyDown(203) Then x=x-3
   If KeyDown(205) Then x=x+3
   y2=Sin(-a)*maxh
   Rect x,y2+y,100,100
   Text 10,10,jump
        Flip
        Cls
Wend

End


Das Prinzip lässt sich aber wie gesagt leicht auf 3d übertragen.
Coding: silizium-net.de | Portfolio: Triton.ch.vu
 

ToGross

BeitragSo, Sep 04, 2005 16:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Code ist nicht schlecht!

Nur leider benötige ich das ganze für ein 3D spiel (bin noch ganz am anfang) und nicht jeder weiß, wie man das auf 3D übertragen kann!

Also ich habe es schon versucht auf 3D zu übertragen aber alles was passiert ist war dass es mein männchen durch die ganze map gejagt hat^^

Habe es so versucht:

In der Hauptschleife
BlitzBasic: [AUSKLAPPEN]

If KeyDown(57)
sprung(0,200,3,p\entity)
EndIf



function sprung()
BlitzBasic: [AUSKLAPPEN]

Function Sprung(z,maxh,v,entity)
If jump=0 Then jump=1
If jump=1 Then a=a+v
If a>180 Then jump=0:a=0
If KeyDown(203) Then z=z-3
If KeyDown(205) Then z=z+3
y=Sin(-a)*maxh
MoveEntity entity,0,y2,z
; Text 10,10,jump
Flip
Cls
End Function



Bin noch schüler und kenn mich mit dem Sin() Cos() und Tan() zeug noch nicht so aus Crying or Very sad

Mein Code ist wahrscheinlich komplett falsch Sad
Ich hätte es gern so, dass mein männchen nicht einfach nur nach oben springen kann, sondern auch noch nach hinten und nach vorne! (variable z)

Dankeschön im Vorraus
 

f L i P

Betreff: alternative lösung

BeitragSo, Sep 04, 2005 16:49
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn du den player während eines sprunges auf der z-achse bewegst springt er, wie dus ausdrückt, auch auf der z-achse

solange du sin und cos nicht verstehst (kannst zwar nix dafür) solltest du auch nicht damit arbeiten, nimm 3 variablen(kommen vor die hauptschleife):

sprungspeed_start#=3
sprungspeed_aktuell#=sprungspeed_start
sprungspeed_verringern=#.1

und in der hauptschleife, wo die bewegungen realisiert werden, musst du nun dein player_y dementsprechend anpassen

MfG fLiP
mir egal wer dein Vater ist- solange ich hier am angeln bin wird nicht über's wasser gelaufen!

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Sep 04, 2005 17:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier nochmal ein einfaches Beispiel in 3D. Willst du das hüpfen nicht haben, so ersetze yg=-yg/2 durch yg=0 in der If-Anweisung...
Code: [AUSKLAPPEN]
Graphics3D 640,480,32,2
SetBuffer BackBuffer()

xp#=0
yp#=10
zp#=20
xg#=0
yg#=0
zg#=0

cam=CreateCamera()
lig=CreateLight()
cub=CreateCube()

TurnEntity lig,70,0,0
PositionEntity cam,0,8,0
PositionEntity cub,x,y,z




While Not KeyHit(1)
 If KeyDown(203) Then xg=xg-0.02
 If KeyDown(205) Then xg=xg+0.02
 If KeyDown(200) Then zg=zg+0.02
 If KeyDown(208) Then zg=zg-0.02
 If KeyDown(57) And yp=0 Then yg=.5

 xg=xg/1.02
 yg=yg/1.02
 zg=zg/1.02
 yg=yg-0.01
 xp=xp+xg
 yp=yp+yg
 zp=zp+zg
 If yp<0 Then yp=0:yg=-yg/2

 PositionEntity cub,xp,yp,zp
 RenderWorld
 Flip
Wend
End
 

BIG BUG

BeitragSo, Sep 04, 2005 17:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Jop, Sprünge mittels Sinuskurve sind nicht nur wesentlich schwieriger einzusetzen, sondern auch physikalisch falsch.

Wenn Dein Spieler nicht den Boden berührt, dann wird die Fallgeschwindigkeit einfach um einen bestimmten Betrag erhöht. So kannst Du dann auch viel leichter auf z.B. Kollisionen reagieren.
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)
 

ToGross

BeitragSo, Sep 04, 2005 21:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für das Beispiel!
Doch schon hab ich ein weiteres Problem. Da es auf dem Terrain auch höhenunterschiede habe, brauche ich noch etwas wie eine Kraft, die mein Männchen zurück auf den Boden hohlt, wenn er das Terrain nicht berürht und nicht am Springen ist.

Das habe ich so lösen wollen:
BlitzBasic: [AUSKLAPPEN]

While Not KeyHit(1)
If KeyDown(203) Then xg=xg-0.02
If KeyDown(205) Then xg=xg+0.02
If KeyDown(200) Then zg=zg+0.02
If KeyDown(208) Then zg=zg-0.02
If KeyDown(57) And yp=0 Then yg=.5

xg=xg/1.02
yg=yg/1.02
zg=zg/1.02
yg=yg-0.01
xp=xp+xg
yp=yp+yg
zp=zp+zg
If yp<0 Then yp=0:yg=-yg/2

PositionEntity player1\entity,xp,yp,zp

;wenn keine Leertaste gedrückt wird und
;der Spieler den Boden nicht berührt
;dann bewegt sich der Spieler nach unten
If Not KeyDown(57) And EntityCollided(player1\entity,TYPE_TERRAIN) Then MoveEntity player1\entity,0,-1,0


RenderWorld
Flip
Wend


Das ganze geht, nur ruckelt alles und teilweiße kommt mein 800 Mhz PC ins stocken!
Habe schon in einigen Tutorials geschaut, ob man das Problem besser lösen kann, aber nichts gefunden Sad

otta

BeitragMo, Sep 05, 2005 1:23
Antworten mit Zitat
Benutzer-Profile anzeigen
also ich persönlich mache es wie folgt

TranslateEntity ball,0,-0.80,0

ganz simpel aber mein figur wird halt dannn die ganze zeit auf den boden gezogen sobald man springt, klappt einwandfrei..bei meinem sprungscript jedenfalls^^" sollte aber eigendlcih auch bei dir kein größeres prob darstellen.

naja aber das mit dem springen ist sowieso immer sone komplizierte sache(finde ich...) ...
AthlonXP 2800+, Radeon 9600XT,160GBHDD,512 MB DDR Ram (neuer Rechner neues Glück;))

Aktuelles Projekt:
momentan Projektlos
 

ToGross

BeitragMo, Sep 05, 2005 9:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Du machst das mit TranslateEntity ??? Ich habe es mit MoveEntity jetzt geschaft!

BlitzBasic: [AUSKLAPPEN]

MoveEntity player1\entity,0,-1,0

UpdateWorld
RenderWorld


Also habe jetzt einfach noch UpdateWorld mit eingebaut und es gibt kein Ruckeln und kein hängen mehr Smile

Black Spider

BeitragMo, Sep 05, 2005 16:53
Antworten mit Zitat
Benutzer-Profile anzeigen
würds net auch so gehn´ !?
BlitzBasic: [AUSKLAPPEN]

If KeyHit(57) Then
Sprungkraft# = 50
;TranslateEntity player,0,Sprungkraft,0
Else Sprungkraft# = Sprungkraft - 9
End If

If Schwerkraft + Sprungkraft < -5 Then
Sprungkraft = 0
schwerkraft = -10
End If

TranslateEntity player,0,Schwerkraft# + Sprungkraft# ,0
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif

otta

BeitragMi, Sep 14, 2005 18:02
Antworten mit Zitat
Benutzer-Profile anzeigen
translate ode move...kA funzt beides weiß aber nicht 100%ig wo der unterschied ist
AthlonXP 2800+, Radeon 9600XT,160GBHDD,512 MB DDR Ram (neuer Rechner neues Glück;))

Aktuelles Projekt:
momentan Projektlos

Black Spider

BeitragMi, Sep 14, 2005 19:40
Antworten mit Zitat
Benutzer-Profile anzeigen
bei "Move" wird die Rotation des Objekts berücksichtigt,
und bei "Translate" nicht.
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif
 

Robin

BeitragSo, Sep 25, 2005 17:44
Antworten mit Zitat
Benutzer-Profile anzeigen
ah gut, ich wusste das auch nicht, danke für die kleine nebeninfo Very Happy
www.purezone.de.vu

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group