| |
Visual-Basic EinsteigerSpiel: Sprites, Collision | | | Autor: realkizZ | Datum: 13.05.05 14:52 |
| Hi, ich hab ein kleines Problem mit
1. den [u]Bewegungsanimationen -
wie kann ich mehrere Sprites bei einem Schritt einbringen?
2. der [u]Kollisions-Abfrage -
im Moment ist alles statisch, aber ich würde gerne sowas wie ein
vorgefertigtes Objekt bauen, das nicht betreten werden kann oder
evtl. sogar eine Funktion ausführt.
------------------------------------------------------------
Ein Bild zur Verdeutlichung:
http://www.styleworks.de/kon1.jpg
------------------------------------------------------------
Und das ist der ganze Code bis jetzt:
"shpCharacter" ist das Image der Spielfigur;
alle "shpSpace"-Objekte sind Shapes für geblockte Felder (in meiner Zeichnung rot);
Dim varMove_left As Integer
Dim varMove_top As Integer
Dim MovementAllowed As Boolean
Option Explicit
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
'Key-Event
Dim Number As Integer
Dim Collision As Boolean
Select Case KeyCode
Case vbKeyUp
shpCharacter.Picture = LoadPicture(App.Path + _
"\gfx\player1_sprites\player1_up.gif")
Call letMove(-250, 0)
Case vbKeyDown
shpCharacter.Picture = LoadPicture(App.Path + _
"\gfx\player1_sprites\player1_down.gif")
Call letMove(250, 0)
Case vbKeyLeft
shpCharacter.Picture = LoadPicture(App.Path + _
"\gfx\player1_sprites\player1_left.gif")
Call letMove(0, -200)
Case vbKeyRight
shpCharacter.Picture = LoadPicture(App.Path + _
"\gfx\player1_sprites\player1_right.gif")
Call letMove(0, 200)
Case KeyCode = 27
End
End Select
'Collision-Check
For Number = 0 To shpSpace.UBound
If shpCharacter.Left < shpSpace(Number).Left + shpSpace(Number).Width _
And shpSpace(Number).Left < shpCharacter.Left + shpCharacter.Width Then
If shpCharacter.Top < shpSpace(Number).Top + shpSpace( _
Number).Height And shpSpace(Number).Top < shpCharacter.Top + _
shpCharacter.Height Then
Collision = True
End If
End If
Next
If Collision = True Then
Select Case KeyCode
Case vbKeyLeft
shpCharacter.Left = shpCharacter.Left + 200
Case vbKeyRight
shpCharacter.Left = shpCharacter.Left - 200
Case vbKeyUp
shpCharacter.Top = shpCharacter.Top + 250
Case vbKeyDown
shpCharacter.Top = shpCharacter.Top - 250
End Select
End If
End Sub
Function letMove(varMove_top, varMove_left)
shpCharacter.Move shpCharacter.Left + varMove_left
shpCharacter.Move shpCharacter.Left, shpCharacter.Top + varMove_top
End Function ------------------------------------------------------------
Vielen Dank im Vorraus,
so long, realkizZ. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats sevZIP40 Pro DLL
Zippen und Unzippen wie die Profis!
Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|