Springen Problem
Übersicht

BB-FanBetreff: Springen Problem |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schraub die schwerkraft rauf ? | ||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
BB-Fan |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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? |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group