| |
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 |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats sevOutBar 4.0
Vertikale Menüleisten á la Outlook
Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. 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
|
|