Die in diesem Thread genannte Kollisionsabprüfung mit PicureBox1.Bounds.IntersectsWith(PictureBox2.Bounds) ist schneller und eleganter
Thanks aber ich meien es anders?
Ich meinte nich das das Spiel rumm ist sodern das Die PictureBox nicht durch das z.b. Panel gehen kann.
geht vom Prinzip her genau gleich, nur dass du andere Controlnamen verwendest...
Ich wollte auch mal ne total überflüssige Signatur:
---Leer---
Das is mein Bis jetziger Quellcode
VB.NET-Quellcode
PublicClass Form1
PrivateSub Form1_KeyDown(ByVal sender AsObject, ByVal e As System.Windows.Forms.KeyEventArgs) HandlesMe.KeyDown
If e.KeyCode = Keys.W Then
PictureBox1.Top = PictureBox1.Top -10
EndIf
If e.KeyCode = Keys.S Then
PictureBox1.Top = PictureBox1.Top +10
EndIf
If e.KeyCode = Keys.A Then
PictureBox1.Left= PictureBox1.Left-10
EndIf
If e.KeyCode = Keys.D Then
PictureBox1.Left= PictureBox1.Left+10
EndIf
EndSub
PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
EndSub
EndClass
Hi,
frag einfach in deinem KeyDown-Event mit einer der oben genannten Methoden ab, ob eine Kollision stattfinden würde, wenn du die Bewegung anhand der gedrückten Tasten ausführen würdest. Ergibt sich eine Kollision, führst du den Bewegungscode nicht aus, wenn nicht, dann schon. Alles klar?
MfG
Dabei ist zu beachten, wie du abfragen musst. Das heißt, wenn du abfragst, ob ein Pixel vor dir eine Mauer ist, das Ergebniss False ist und du um 10 deine Figurbewegst, kann es nat. sein, dass in diesen 10 Pixeln nochmal eine Mauer liegt. D.h., du musst alle Positionen von 1 bis 10 durchgehen und überprüfen, ob sich dort ein Hinderniss befindet, darf sich das Objekt nur noch soweit bewegen, bis es an die Mauer stößt. Sowas löst man am besten mit Schleifen. Und noch etwas: Nactürlich geht auch die Funktion IntersectWith, aber so ein Spiel macht man gewöhnlicherweise mit GDI+ oder XNA und nicht mit PictureBoxen!
MfG TheoTechnic
geht vom Prinzip her genau gleich, nur dass du andere Controlnamen verwendest...