Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi [Andorra 2D] Auf "Objekt" klicken registrieren (https://www.delphipraxis.net/118368-%5Bandorra-2d%5D-auf-objekt-klicken-registrieren.html)

napsterxx 6. Aug 2008 17:27


[Andorra 2D] Auf "Objekt" klicken registrieren
 
Moin Moin,
ich habe ein kleines 2D Spielchen, funktioniert alles prima. Es fliegen Enten :D über den Bildschirm und man muss diese "abschießen". Ich habe ein for schleife die überprüft ob der Mauszeiger über einer Ente ist, wenn ja dann wird die ente nicht mehr angezeigt da man sie ja "abgeschossen" hat.
Dummerweise dauert das Rechnen bei den ganzen Enten zu lang :D Deshalb wollte ich fragen ob es eine andere Möglichkeit gibt als dauernt die Position zu überprüfen.
Also von den enten habe ich immer folgende Daten:
X und Y-Koordinate
und die Weite und Höhe der Ente

igel457 6. Aug 2008 18:26

Re: [Andorra 2D] Auf "Objekt" klicken registrieren
 
Ich kann mir nicht vorstellen, das eine solche Kontrolle sonderlich viel Zeit in Anspruch nimmt.

Eine andere Methode: TSpriteEngine.GetSpriteAt(X, Y) liefert dir das oberste Sprite an der angegebenen Position zurück.

napsterxx 7. Aug 2008 14:58

Re: [Andorra 2D] Auf "Objekt" klicken registrieren
 
ich verwende keine Sprite engine... sondern AdDraw. so wie im Tutorial 1.

Ich habe noch eine Frage. Meine Hühner fliegen jetzt rum, ich habe einen Baum eingebaut, die Hühner fliegen dahinter. Der baum ist etwas schief und hat clFuchsia als Transparentcolor. das blöde ist ich überprüfe ja ob meine maus über nem Huhn oder einem Objekt, in dem Fall ein Baum, ist. Wenn ich über einem Huhn bin wirds abgeschossen, ansonsten nicht, da man ja nicht durch einen Baum schießen kann. Mein Problem ist nun wenn der Baum schief ist sehe ich dsa Huhn schon dahinter wenn es aber immernoch hinter dem Rechteck des Baums ist, dieser ist ja immernoch ein Rechteck, aber nur eben wurde die farbe trasparent. Wie kann ich dsa nun rausfinden. mit einer maske oder so?

napsterxx 9. Aug 2008 16:14

Re: [Andorra 2D] Auf "Objekt" klicken registrieren
 
Kommt schon -.-
Hat keiner eine Ahnung wie das mit der Transparenz geht?

igel457 9. Aug 2008 16:30

Re: [Andorra 2D] Auf "Objekt" klicken registrieren
 
Wie du schon gesagt hast: Hinterlege eine Maske. Besonders einfach ist ein Bitmap, das du auf eine Farbtiefe von pf1Bit reduziert hast. Die Methode "TBitmap.Mask" hilft dir dabei. Für eine einzelne Überprüfung während eines Klicks reicht die Performance von "TBitmap.Canvas.Pixels" zur Abfrage der Farbe eines Pixels sogar noch aus.

napsterxx 9. Aug 2008 16:46

Re: [Andorra 2D] Auf "Objekt" klicken registrieren
 
Mit Andorra? TBitmap?

igel457 9. Aug 2008 16:54

Re: [Andorra 2D] Auf "Objekt" klicken registrieren
 
TBitmap aus der VCL. Du kannst dir natürlich aber auch selbst eine eigene Maskenklasse Programmieren.

napsterxx 9. Aug 2008 16:59

Re: [Andorra 2D] Auf "Objekt" klicken registrieren
 
Ja aber ich habe doch das Huhn in einer AdImageList.
Was soll ich nun machen?

igel457 9. Aug 2008 17:12

Re: [Andorra 2D] Auf "Objekt" klicken registrieren
 
Delphi-Quellcode:
AdImageList[0].Texture.SaveToGraphic(DeinTBitmapBitmap);

napsterxx 9. Aug 2008 17:16

Re: [Andorra 2D] Auf "Objekt" klicken registrieren
 
Das muss ich ja immer machen wenn man klickt ... für jedes Huhn. Das ist doch ne Hammer Performanceeinbuse
Und dann muss ich noch eine Maske setzen. Und wie? UNd wenn ich das gemacht habe dann noch überprüfen ob ich über dembild bin? Uff

Also mit de Code kann ich ja eine Maske erstellen:
http://swissdelphicenter.ch/de/showcode.php?id=582

Wie finde ich raus ob meine maus darüber ist?


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:41 Uhr.
Seite 1 von 2  1 2   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz