Mauszeiger auf der Sprite oder nicht? [gelöst]
Übersicht

Weazle25Betreff: Mauszeiger auf der Sprite oder nicht? [gelöst] |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Seid Tagen bastel ich nun schon an meiner SpriteLib und es funktioniert auch alles so wie ich es möchte.
Layer und Sprites können bereits gedreht und positioniert werden. Wobei der Drehpunkt der Sprites auch ausserhalb der Sprite liegen kann. Und genau da liegt mein Problem: Wie kann ich herausfinden ob eine 2D-Koordinate (z.B. die Position des Mauszeigers) auf einem Sprite liegt oder nicht? Hier ist das Problem: Code: [AUSKLAPPEN] Function SL_PointOverSprite( SpriteID, x#, y# ) SP.SL_Sprite = Object.SL_Sprite( SpriteID ) If SP = Null Then Return 0 TFormPoint x#,y#,0, SP\Layer\SpriteBase\Pivot, SP\Layer\Mesh ;TFormPoint x,y,0, 0, SP\Layer\Mesh x# = TFormedX() y# = TFormedY() ;Die Ecken des Sprites x1# = VertexX( SP\Layer\Surface, SP\Vtx[0] ) ; oben links y1# = VertexY( SP\Layer\Surface, SP\Vtx[0] ) x2# = VertexX( SP\Layer\Surface, SP\Vtx[1] ) ; oben rechts y2# = VertexY( SP\Layer\Surface, SP\Vtx[1] ) x3# = VertexX( SP\Layer\Surface, SP\Vtx[2] ) ; unten links y3# = VertexY( SP\Layer\Surface, SP\Vtx[2] ) x4# = VertexX( SP\Layer\Surface, SP\Vtx[3] ) ; unten rechts y4# = VertexY( SP\Layer\Surface, SP\Vtx[3] ) ; Und wie geht's jetzt weiter? End Function Nur wie geht's jetzt weiter? Hab schon mehrere fremde SpriteLibs runtergeladen und studiert und hab echt keinen Plan was ich da jetzt machen muss. Gruss Weazle PS: den kompletten Code gibts HIER (ca. 300 kb) |
||
- Zuletzt bearbeitet von Weazle25 am Di, Feb 20, 2007 14:28, insgesamt einmal bearbeitet
![]() |
IronstormErstklassiger Contest-Veranstalter |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab mir deinen Code jetzt nicht angeschaut, aber ich denke du bekommst die 2D Koordinaten deiner Sprites raus sowie die Höhe und Breite des Sprites. Wenn du diese 4 Variabeln mit dem Befehl RECTSOVERLAP verbindest könntest du das Problem lösen.
MfG Ironstorm |
||
..:: blackbird design : blackbird photography : Futuro Verde : X-Commander ::..
MacBook | Intel Core 2 Duo 2,1 GHz | 2048 MB RAM | 80 GB HDD | Mac OS X 10.6.2 (Snow Leopard) | Adobe CS4 Design Premium |
Weazle25 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mit RectsOverlap() functioniert es nicht denn wie ich oben schon geschrieben habe können Layer und Sprites gedreht werden.
RectsOverlap() functioniert aber nur dann wenn weder Layer noch Sprite gedreht wurde. In der Theorie ist mir schon klar wie ich das machen muss: Zuerst müssen die Vertex-Koordinaten irgendwie in Welt-Koordinaten (2D-Koordinaten) umgewandelt werden und dann muss irgendwie ausgerechnet werden ob die XY-Koordinate (Funktionsparameter) innerhalb der Vertex-Koordinaten liegt. Nur wie setze ich das nun in die Praxis um? Gruss Weazle |
||
coldie |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Warum benutz du nicht cameraproject() ? | ||
Weazle25 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hab das Problem gelöst:
Mit TFormPoint() die Vertex-Koordinaten in globale Koordinaten umwandeln. Die globalen Koordinaten dann mit CameraProject() in Bildschirm-Koordinaten umwandeln und schon war der Rest auch kein Problem mehr. Danke an alle die geholfen haben. Gruss Weazle |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group