Auslesen ob eine Picurebox nahe ist.

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von FloFuchs.

    Auslesen ob eine Picurebox nahe ist.

    Hey
    ich will mal versuchen sone art Minecraft 2D oder Terraria oder sowas halt in VB mit Pictureboxen zu machen. Das erstellen und die auswahl des blocks klappt ganz gut. Jetzt will ich jedoch schauen ob, wenn der spieler einen rechtsklick macht, ein block rechts der spielfigur genommen. Ich erstelle die Blöcke via Script. Also ich meine, ich habe nicht schon pictureboxen erstellt sondern mach die per script. Die Blöcke definiere ich so:

    VB.NET-Quellcode

    1. Dim block As New PictureBox

    Und so wird der Block platziert:

    VB.NET-Quellcode

    1. 'Hier erstellen wir unseren ersten Block
    2. blockid += 1
    3. block.Name = "block" & blockid
    4. 'Hier machen wir den Block 32x32pixel groß
    5. block.Width = 32
    6. block.Height = 32
    7. 'Hier gekommt der Block sein aussehen
    8. block.BackgroundImage = Image.FromFile(pfad + aktblock + typ)
    9. block.BackgroundImageLayout = ImageLayout.Zoom
    10. 'Hier wird der Block rechts neben dem Spieler platziert
    11. block.Left = chara.Right
    12. block.Top = chara.Bottom - 32
    13. 'Hier wird der Block angezeigt
    14. Controls.Add(block)
    15. Label1.Text = block.Name

    Man kann schon das

    VB.NET-Quellcode

    1. block.Name = "block" & blockid
    sehen. Ich dachte mir damit kann man den Block später besser identifizieren. Naja. Aufjedenfall will ich wissen, wie und ob es überhaupt möglich ist, zu prüfen, wenn der spieler rechtsklick macht, ob rechts neben ihm ein Block ist. Dieser soll dann entfernt werden.

    Danke!
    ...aber gut, dass wir darüber gesprochen haben!
    Ich weiß, das beantwortet nicht deine Frage, aber wenn du ein Minecraft 2D machen möchtest, solltest du garnicht erst mit Pictureboxen anfangen. Wenn du sehr viele in der Form hast, führt das zu starken FPS-Einbrüchen. Befass dich deswegen erstmal ein wenig mit GDI und Gameentwicklung, denn nach deiner Frage zu Urteil, kennst du dich damit noch nicht sehr gut aus.

    Gruß, Jan
    mit GDI und XNA kenn ich mcih garnicht aus.

    Dennoch wollte ich es mal mit Pictureboxen probieren. Ich wills ja auch nie veröffentlichen oder so. Es ist ganz schlicht, keine animationen oder so. Naja das mit zufielen Pictureboxen, hmm naja ^^. rozdessen will ich es mal mit Pictureboxen probieren. Es wird doch sicherlich irgendwie möglich sein ^^

    Danke!
    ...aber gut, dass wir darüber gesprochen haben!
    Ich würde das so machen:


    Ein neues Rectangle mit der Position der Maus und der Größe 5*5 erstellen.

    Und dann mit einem Array jeden Block auf Kollision mit der Maus prüfen.

    etwa so

    VB.NET-Quellcode

    1. for x as integer = 0 to blocks.lenght
    2. if blocks(x).intersectswith(MouseRectangle) then
    3. 'Block x ist dann der block der, der mit der Maus kolidiert
    4. End if
    5. next
    Ich will ja nich prüfen ob ein block mit der maus in berührung kommt sondern:
    Ich habe eine Spielfigur mit der größe 32Px breite und 64 höhe.
    Nun will ich dass, wenn ich linke maustaste drücke (was kein problem ist) der block rechts neben den füßen zerstört wird, bzw ausgelesen wird, ob sich dort einer befindet.
    ...aber gut, dass wir darüber gesprochen haben!
    generell ja.. du kannst ja abfragen ob der click der mouse vom rechten oder linken Button kam...
    schaustu hier:

    VB.NET-Quellcode

    1. Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
    2. MsgBox(e.Button.ToString)
    3. End Sub