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:
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:
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.
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.