PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [RMXP / RGSS] Sprite fade-out Problem



Alan
26.12.2010, 21:30
Hallo Leute,

ich saß kürzlich am Maker und traute meinen Augen nicht so recht. Ich hab per RGSS Skript ein ganz normales Sprite anzeigen lassen. Dann hab ich in dessen Update-Methode die Transparenz wie folgt erhöht:



@sprite.color.alpha += 10
if(@sprite.color.alpha > 255)
@sprite.color.alpha = 255
end


So und jetzt kommt der Clou an der Sache: wenn ich das mit einem Bild mache und dessen Transparenz 255 erreicht, dann ist das Sprite an sich zwar weg, der Umriss des Sprites ist aber am Hintergrund immer noch deutlich als eine Art Schatten erkennbar.

Meine Frage: bringe das nur ich zustande oder tritt das auch bei anderen auf? Und wie kann ich verhindern, dass das passiert, um einen flüssigen Übergang von "sichtbar" nach "unsichtbar" zu erreichen wie z.B. bei den Standard-Picture-Befehlen?

Danke im Voraus,


Alan

Cepanks
26.12.2010, 23:44
Für die Transparenz gibt es eigentlich Sprite#opacity (Was auch die Standard-Pictures benutzen ;)).
Wobei hier eben 255 voll sichtbar und 0 unsichtbar ist.

Alan
27.12.2010, 09:48
Hi,

danke für den Hinweis... hätte ich auch selber drauf kommen können, nur hätte ich nicht gedacht dass es neben Alpha noch ein weiteres Attribut gibt xP

Vielen Dank!


Alan

The_Burrito
27.12.2010, 11:37
Bitmap.color ist das Attribut womit man die Farbe setzen kann mit der zukünftige Zeichenoperationen (fill_rect, draw_text, etc) durchgeführt werden. Mit Bitmap.color.alpha setzt du also nur den Alphakanal der Farbe für alles was danach in das Bitmap gezeichnet wird. Auf alles was sich schon in dem Bitmap befindet hat dieser Befehl keine auswirkung.

-KD-
27.12.2010, 15:50
Er nutzt Sprite#color, nicht Bitmap#color. Das hat tatsächlich Einfluss auf die Anzeige des Sprites. Aber wenn du die Transparenz für alle Farbpixel einheitlich runtersetzen willst, musst du Sprite#opacity verwenden. Die color-Methode scheint da etwas anders vorzugehen.

The_Burrito
27.12.2010, 20:04
Ah tatsächlich, mein Fehler. Sprite.color setzt ne Farbe mit der das Sprite überblendet wird, und ändert daher nicht wirklich etwas an Transparenz des zugrundeliegenden Bitmaps.

Alan
27.12.2010, 20:57
@The_Burrito: Tatsächlich ändert das Modifizieren von Sprite#color.alpha schon etwas an der Transparenz des gesamten Sprites - nur wird es damit nie so 100%ig durchsichtig wie wenn man es mit Sprite#opacity machen würde. Interessant, dass es hier überhaupt zwei Versionen gibt, wobei mir die Verwendungszwecke von "alpha" nicht mehr ganz einleuchten, wo es doch "opacity" gibt...