![]() |
[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 |
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. |
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? |
Re: [Andorra 2D] Auf "Objekt" klicken registrieren
Kommt schon -.-
Hat keiner eine Ahnung wie das mit der Transparenz geht? |
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.
|
Re: [Andorra 2D] Auf "Objekt" klicken registrieren
Mit Andorra? TBitmap?
|
Re: [Andorra 2D] Auf "Objekt" klicken registrieren
TBitmap aus der VCL. Du kannst dir natürlich aber auch selbst eine eigene Maskenklasse Programmieren.
|
Re: [Andorra 2D] Auf "Objekt" klicken registrieren
Ja aber ich habe doch das Huhn in einer AdImageList.
Was soll ich nun machen? |
Re: [Andorra 2D] Auf "Objekt" klicken registrieren
Delphi-Quellcode:
AdImageList[0].Texture.SaveToGraphic(DeinTBitmapBitmap);
|
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: ![]() Wie finde ich raus ob meine maus darüber ist? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz