Springen Problem

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

BB-Fan

Betreff: Springen Problem

BeitragDi, Jun 24, 2008 15:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe folgenden code hier mittels sufu gefunden.

Code: [AUSKLAPPEN]
IF KEY(57) AND jump=0
jump=1
jumpcount=1
ENDIF
IF jump=1
jz=jz+3*SIN(ABS(100-jumpcount+10))
jumpcount=jumpcount+1
IF jumpcount=5 THEN jump=0
ENDIF


diesen habe ich eingebaut, aber der funktioniert noch nicht richtig.

ich habe eine kollisionsprüfung, bei welcher bei kollision mit boden, y um 0.1 erhöht wird, andernfalls um 0.1 veringert, damit ich nicht duch den boden falle.würde ich den wert weiter erhöhen, ruckelt alles.

der sprung funktioniert soweit, bis auf ich es noch nicht hinbekommen habe, dass ich während des sprungs weiter höher springen kann.

aber viel schlimmer ist, dass ich wenn keine kollision ist, ich weiter y nach unten veringere, was ja viel zu langsam ist, wenn ich beim sprung wieder runter will.

ich müsste also kollision und diesen sprung irgendwie in einklang bringen.

irgendeine idee?

[edit] okay das mit dem mehrmals springen hab ich gelöst, aber wenn ich space drücke, macht er einen satz komplett nach oben, ohne dass man die höhe einstellen kann, und aufgrund der schwerkraft gleitet er langsam nach unten.

ozzi789

BeitragDi, Jun 24, 2008 17:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Schraub die schwerkraft rauf ?
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5
 

BB-Fan

BeitragDi, Jun 24, 2008 22:14
Antworten mit Zitat
Benutzer-Profile anzeigen
das größte problem ist inzwischen, dass bei einem sprung, man nicht nach oben fließend springt, sondern einen satz macht, und der player gleich am scheitelpunkt ist.

BigMaexle

BeitragMi, Jun 25, 2008 15:33
Antworten mit Zitat
Benutzer-Profile anzeigen
jz als Float deklarieren?

sieht so aus für mich.
Kann man sich im Allgemeinen merken: Wenn etwas "abgehakt" ist, nicht flüssig läuft, liegt es oft daran, dass irgendwas als Integer, nicht als Float definiert wird.
--------------------------------------
Ich bin unfreiwillig ein Mitglied dieser kapitalistischen Gesellschaft, wo jeder Geldgeile Unternehmer an mein Geld will und ich selbst bei meinen Entscheidungen so gut wie willenlos bin...... und ich bin glücklich drüber
 

BB-Fan

BeitragDo, Jun 26, 2008 0:05
Antworten mit Zitat
Benutzer-Profile anzeigen
mädels, ich bekomms nicht hin.
kann mir vielleicht doch jemand etwas mehr helfen, hab echt die komplette seite durchsucht.

ich habe die möglichkeit eben auf kollision mit boden zu prüfen, und dies in einer variablen zu speichern, damit man nur bei bodenkontakt springt.

hab eine funktion, die nennt sich "jumping()" und dort habe ich heut mal versucht den code von mario aus den samples zu nehmen, aber mein player wartet nicht auf die tatse zum springen, sonder sowie ich die .exe starte, fliegt mein player gleich nach oben und das wars.

hier mal meine funktion

Code: [AUSKLAPPEN]
   ty=EntityY(player)
   y_vel=(ty-playertemp_y)
   playertemp_y=ty
   
   If KeyHit(57)   
      y_vel=3   
   Else
      y_vel=y_vel-.3   
   EndIf
   TranslateEntity player,0,y_vel,0


seit drei tagen sitz ich nun schon dran, und bemühe mich redlich, aber ich bekomme keinen sprung hin, wo sich auf tastendruck der player nach oben und wieder nach unten bewegt, ein sprung eben.

achja, und die gravitation muss ja auch noch drin sein, damit er aufm boden bleibt, wenn er nicht gerade springt, aber das beißt sich sicher wieder mit dem fall aus dem sprung.

büdde büdde, ich weiß, ich bettel, aber ich hab echt alles angeschaut, irgendwie seh ich meine fehler nicht, sitz wohl schon zu lange dran.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Jun 26, 2008 0:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Meiner Meinung nach hat y_vel=(ty-playertemp_y) da nichts zu suchen. Der Rest sollte funktionieren. Wichtig ist nur, dass y_vel nach einer Kollision auf 0 gesetzt wird.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

BB-Fan

BeitragDo, Jun 26, 2008 0:45
Antworten mit Zitat
Benutzer-Profile anzeigen
okay hab ich rausgenommen, auf tastendruck bewegt sich der player jetzt nach oben, und kommt auch wieder runter, also eigentlich wunderbar, leider fällt er durch den boden durch, obwohl ich y_vel bei kollision auf 0 gesetzt habe.

es gibt gar keine kollision mehr, fällt gleich durch.

okay habs hinbekommen, nur eins ist mist, mein player fällt trotzdem ab und zu durch, scheint an den werten zu liegen mit denen es sich nach unten bewegt.wenn es halt die kollision nicht schafft.

trotzdem weiß ich nicht, warum ich das von dir genannte löschen sollte, denn bei dem mario beispiel ists ja so drin, und der sprung dort sieht auch viel viel besser aus.

kannst du mal schauen in den beispielen von bb3d und mir sagen, was ich noch verbessern könnte?

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Jun 26, 2008 14:59
Antworten mit Zitat
Benutzer-Profile anzeigen
BeispielCode: [AUSKLAPPEN]
Graphics3D 400,300,0,2
SetBuffer BackBuffer()

Local Timer=CreateTimer(60)
Local Camera=CreateCamera()
Local Cube=CreateCube()
Local Light=CreateLight()

PositionEntity Camera,0,0,-5
RotateEntity Light,40,-40,0
PositionEntity Cube,0,-11,0
ScaleEntity Cube,10,10,10

Local Player=CreateSphere(16)

EntityType Player,1
EntityType Cube,2
Collisions 1,2,2,2

YSpeed#=0





While Not KeyHit(1)
   
   If CountCollisions(Player) Then
      YSpeed=0
      If KeyHit(57) Then YSpeed=0.3
   Else
      YSpeed=YSpeed-.03
   End If
   
   If KeyDown(203) Then TranslateEntity Player,-0.1,0,0
   If KeyDown(205) Then TranslateEntity Player,+0.1,0,0
   If KeyDown(200) Then TranslateEntity Player,0,0,+0.1
   If KeyDown(208) Then TranslateEntity Player,0,0,-0.1
   
   TranslateEntity player,0,YSpeed,0
   
   WaitTimer(timer)
   UpdateWorld
   RenderWorld
   Flip 0
Wend
End
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

BIG BUG

BeitragDo, Jun 26, 2008 18:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

   ty=EntityY(player)
   a_speed=(ty-playertemp_y)
   playertemp_y=ty


Dieser Teil hat schon seinen Sinn. Hier wird quasi die Geschwindigkeit des Objektes immer neu ermittelt, anstatt diese bei Kollision einfach auf 0 zu setzen.
Auf einem flachen Boden macht es tatsächlich keinen Unterschied. Bei Level mit Aufbauten wird aber durch das "Auf-Null-Setzen" der Fall auch dann gestoppt, wenn man z.B. nur seitlich gegen eine Wand oder Schräge hüpft. Bei der "Mario-Lösung" hingegen bleibt hier die Fallgeschwindigkeit erhalten.
Die Mario-Lösung funktioniert also besser mit der Blitz3D-internen Kollision. Damit würde die Kugel in Hectics Beispiel auch realistischer von der Plattform abrutschen.
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)
 

BB-Fan

BeitragFr, Jun 27, 2008 17:29
Antworten mit Zitat
Benutzer-Profile anzeigen
wie muss das da in hectics beispiel eingebaut werden?

also ich mach kein copy und paste, hab mir seinen code angeschaut, und auf meinen umgeschrieben, und auch gleich was gelernt.
 

BIG BUG

BeitragMo, Jun 30, 2008 23:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Graphics3D 400,300,0,2
SetBuffer BackBuffer()

Local Timer=CreateTimer(60)
Local Camera=CreateCamera()
Local Cube=CreateCube()
Local Light=CreateLight()

Local Wall=CreateCube()



PositionEntity Camera,0,0,-5
RotateEntity Light,40,-40,0
PositionEntity Cube,0,-11,0
ScaleEntity Cube,10,10,10


PositionEntity wall, 2.5, 0, 0
EntityColor wall, 128,128,128


Local Player=CreateSphere(16)

EntityType Player,1
EntityType Cube,2
EntityType Wall,2
Collisions 1,2,2,2

YSpeed#=0




While Not KeyHit(1)
   
   YSpeed=(EntityY(player)-YPosOld#)
   YPosOld# = EntityY(player)

   If KeyHit(57) Then
         If CountCollisions(Player) > 0 And YSpeed = 0 Then YSpeed=0.4
   EndIf

    YSpeed=YSpeed-.03

   
   If KeyDown(203) Then TranslateEntity Player,-0.1,0,0
   If KeyDown(205) Then TranslateEntity Player,+0.1,0,0
   If KeyDown(200) Then TranslateEntity Player,0,0,+0.1
   If KeyDown(208) Then TranslateEntity Player,0,0,-0.1
   
   TranslateEntity player,0,YSpeed,0
   
   WaitTimer(timer)
   UpdateWorld
   RenderWorld

   Flip 0
Wend
End
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group