Seite 1 von 1

Abfrage ob Mouse über einem bestimmten Sprite ist

Verfasst: 05.07.2007 18:29
von Zweihänder
Hallo,

ich habe auf einem Screen einige Sprites dargestellt, die ich mittels der Maustaste anwählen möchte. Gibt es einen Befehl, mit dem ich abfragen kann, ob sich der Mauspfeil über einem bestimmten Sprite befindet?

Verfasst: 05.07.2007 18:34
von PureBasic4.0
Bild

ich habe das ganze in ein Bild gepackt, weil phpBB das so darstellt:

Code: Alles auswählen

If MouseX() > SpriteX And MouseX() <SpriteX> SpriteY And MouseY() < SpriteY + SpriteHeight(1)
  ;...
EndIf
SpriteWidth() und SpriteHeight() beziehen sich auf ein Sprite, das die ID 1 trägt.

Verfasst: 05.07.2007 18:39
von a14xerus
Benutz MouseX() und MouseY()
Wo die Sprites sich befinden wirst du ja wohl selber wissen :wink:

Es gab auch mal einfache 2d Kollisionsabfrage-Proceduren hier im Forum.
Leider weiß ich nicht mehr wo und von wem.

@PB4.0 Schalte HTML aus, dann gehts

Verfasst: 05.07.2007 18:45
von Zweihänder
Hört sich auf jeden Fall schon einmal super an. Die Spriteausgabe ist bei mir aber folgendermaßen:

Ich habe ein Array (x,y) erstellt. Dies stellt sozusagen eine Spielfeldkarte dar. Auf dem Bildschirm gebe ich einen Kartenausschnitt aus. Jetzt möchte ich mit der Maus ein Feld dieser Ausgabe anwählen können. Natürlich wird beispielsweise der Sprite "Grasfläche" hier öfter ausgegeben, so dass ich - so denke ich auf jeden Fall - mit der Sprite# nicht weiterkomme. Wenn ich das Feld anklicke möchte ich die x und y-Koordinate des Arrayfeldes als Resultat wiederbekommen.

Verfasst: 05.07.2007 18:52
von a14xerus
ah eine Tilemap.. leider sind aufgrund eines HDD Crashes meine alten Codes weg, dadrunter ein Tilemap Editor.
Grundprinzip:
Zur Darstellung hast du ja w3ohl 2 Variablen, die die horizontale und Vertikale Verschiebung der Map anzeigen...
Entweder sind diese in Pixeln oder stehen für einen Schritt im Array.

grundsätzlich musst du dann die mausposition mit der Verschiebung der map * tilegröße Vergleichen
Sind einfache rechnung.
Lass die einfach alle wichtigen werte mittels drawtext anzeigen und probier ein bisschen herum ob du nun + oder - oder * oder / an bestimmten Stellen brauchst.
Genau so wie du deine Map anzeigen Lässt kannst du auch rückwirkend die relativen oder absoluten X/Y Positionen sowieso den Array eintrag herausfinden.

Verfasst: 05.07.2007 18:58
von Kaeru Gaman
kernpunkt ist einfach, berechne es aus den mauskoordinaten und den darstellungs-koordinaten der sprites.

für check auf ner tilemap, das hat a14xerus schon gut umrissen...

der code mit den koordinaten-checks heißt "collisions", und befindet sich im C-T&T-unterforum...

Verfasst: 05.07.2007 19:02
von Zweihänder
Dann werd ich mich mal ans Berechnen machen... :o