[XNA] Click auf Texture erkennen

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von vb-checker.

    [XNA] Click auf Texture erkennen

    Hi,
    ich fange gerade an, ein Spiel mit XNA zu entwickeln. Für das Menü habe ich ein paar Bilder (Texture2D), die ich anklicken möchte. Allerdings hab ich nichts dazu gefunden, wie man einen Click auf ein Bild abfängt. Ich denke mal, dass es in den Sub Update kommt, allerdings komm ich da auch nicht weiter. Kann mir da einer helfen bzw Tipps geben?

    LG vb-checker

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !

    Hallo,

    du kannst keinen Klick auf die Textur erkennen...du kannst nur über einfache 2D Kollisionserkennung gucken, ob sich die Maus über der Textur befindet und wenn dann noch die linke Maustaste gedrückt ist, dann soll etwas ausgelöst werden...

    Mfg jvbsl
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Also so richtig gelöst ists doch nicht. So kontrolliere ich, ob mit der Maus geklickt wird:

    VB.NET-Quellcode

    1. Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vkey As Long) As Boolean
    2. Protected Overrides Sub Update(ByVal gameTime As GameTime)
    3. ...
    4. If CBool(GetAsyncKeyState(1)) Then
    5. Application.Exit()
    6. End If
    7. End Sub

    Das funktioniert auch. Allerdings wird das Programm auch beendet, wenn ich irgendwo anders ein paar mal hinklicke und die Maus danach nur über die Beenden-Textur bewege. Wie kann ich das verhindern?

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !

    Hi,
    Die API ist wie mir vor etwas längerem aufgefallen ist bei Xna unnötig.
    Füg mal ein Import zu Microsoft.Xna.Framework.Input zu.
    Dann kannst du in der Update Methode Keyboardstate und Mousestate abfangen. Die Maus kannst du glaube mit IsMouseVisible = True anschalten - kanns gerade nicht testen.
    Also ein Beispiel für die Tastatur & Maus in derUpdate Methode

    VB.NET-Quellcode

    1. Dim kbstate As Keyboardstate = Keyboard.GetState()
    2. if kbstate.Iskeydown(Keys.up) Then
    3. ' Taste nach oben ist runtergedrückt
    4. End if
    5. Dim msstate As MouseState = Mouse.Getstate()
    6. if msstate.LeftButton = ButtonState.Pressed Then
    7. ' Linke Maustaste wurde gedrückt
    8. End if

    In msstate befinden sich auch die Mousekoardinaten.
    Mfg
    Loadsoft