Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Figur springt über ein Hindernis (und fällt rein)





Frage

Liebes Supportnet! ich hab vor ein paar Tagen mit einem kleinen Jump'n'run Spiel begonnen(mit Visual Basic 6). Dort ist eine Figur die bereits laufen & springen kann. Nun möchte ich gerne ein Hinderniss einbauen. Dazu hab ich einfach ein Rechteck (Shape) genommen. Ich habe es bereits geschafft die Linke & Rechte Seite so zu machen, dass die Figur bei der Berührung gegen die Seiten stehen bleibt. Doch es gelingt mir einfach nicht das gleich mit der oberes Seite zu machen. Kann mir da evtl. jemand helfen? Hier ein paar Code Ausschnitte: [quote][i]Sub Oben() If Timer_jump.Enabled = False Then Timer_jump.Enabled = True End If Figur.Move Figur.Left + 0, Figur.Top - 1000 SleepUntil (1000) Figur.Move Figur.Left + 0, Figur.Top + 1000 End Sub Sub Rechts() Figur.Move Figur.Left + 50 Set Figur.Picture = LoadPicture(App.Path & "\Bilder\Figurrechts.gif") If (Figur.Left - Figur.Width) < objekt.Left And Figur.Top > objekt.Top - objekt.Height And Figur.Top < objekt.Top + objekt.Height And Figur.Left > objekt.Left Then Figur.Left = Figur.Left + 50 End If 'linke seite If (Figur.Left + Figur.Width) > objekt.Left And Figur.Top > objekt.Top - objekt.Height And Figur.Top < objekt.Top + objekt.Height And Figur.Left < objekt.Left Then Figur.Left = Figur.Left - 50 End If End Sub Sub Links() Figur.Move Figur.Left - 50 Set Figur.Picture = LoadPicture(App.Path & "\Bilder\Figurlinks.gif") If (Figur.Left - Figur.Width) < objekt.Left And Figur.Top > objekt.Top - objekt.Height And Figur.Top < objekt.Top + objekt.Height And Figur.Left > objekt.Left Then Figur.Left = Figur.Left + 50 End If If (Figur.Left + Figur.Width) > objekt.Left And Figur.Top > objekt.Top - objekt.Height And Figur.Top < objekt.Top + objekt.Height And Figur.Left < objekt.Left Then Figur.Left = Figur.Left - 50 End If End Sub Sub Oben = vbKeyUp Sub Rechts = vbKeyRight Sub Links = vbKeyLeft[/i][/quote] [url=http://breakout.br.ohost.de/gallery/Aufzeichnen.JPG][u]Link[/u][/url] [url=http://breakout.br.ohost.de/gallery/Aufzeichnen2.JPG][u]Link[/u][/url]

Antwort 1 von kicia

Hallo breznica,
wenn ich das richtig verstehe, versetzt Du die Figur beim drücken der jump taste um 1000 nach oben, und nach einer Sekunde wieder um 1000 nach unten. Das passiert unabhängig von irgendwelchen IF-THEN Bedingungen.

Ich würde vorschlagen, sowas wie Gravitation einzubauen, also daß die Figur immer nach unten will und nur stoppt, wenn etwas im Weg ist.

Hast Du eine Schleife, die sich ständig wiederholt? Dort würde sowas stehen wie:
IF (nichts im Weg...) THEN Figur.Top = Figur.Top + 1


Noch ein Tip:
Die Figur wird sich so wie es ist nie den Kopf stoßen können.
Ich würde eine Eigenschaft Figur.ImpulsY einführen.
In jedem Schleifendurchlauf dann:
Figur.ImpulsY = Figur.ImpulsY + 1.
IF Figur.Top + Figur.ImpulsY > (irgendein Hindernis) THEN Figur.ImpulsY = 0
Figur.Top = Figur.Top + Figur.ImpulsY

Bei JUMP setzt Du zB. Figur.ImpulsY = -50 (oder so, ausprobieren).

Wird natürlich leider etwas komplizierter.
Gleiches könnte man natürlich auch mit X (horizontal) machen.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: