RGSS/Sprite

Aus Scientia
Version vom 5. Dezember 2011, 16:28 Uhr von MagicMaker (Diskussion | Beiträge)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Sprites sind das Basiskonzept in RGSS um Grafiken im RGSS Player anzuzeigen. Die Klasse speichert die eigentliche Grafik aber nur in einem Attribut und kümmert sich eher um die letzendliche Darstellung auf dem Bildschirm.

Die Klasse ist für 2D Spiele ausgelegt, und hat einige Methoden die speziell darauf zugeschnitten sind.


In diesem Artikel wird sowohl der Sprite in RGSS als auch in RGSS2 und RGSS3 beschrieben. Spezielle Teile, die nur für, bis oder ab bestimmten Versionen gelten, sind mit (RGSSx) markiert und umgekehrt, wenn es nicht schon im Text dabei steht.

Code Beispiel für eine mögliche Verwendung

# Ich habe mir in die Variable +grafik+ eine Bitmap gespeichert.
# Nun möchte ich sie auf dem Screen anzeigen. Ich verwende dazu
# ein Sprite Objekt.
my_sprite = Sprite.new()
my_sprite.bitmap = grafik
# Die Bitmap zeigt ein Set von einzelnen Frames einer Bewegungs-
# animation meines Helden, ich möchte also nur einen bestimmten
# Teil anzeigen. Ich weiß die Grafik besteht aus genau 7 einzelnen
# Frames, was ich mir zu nutze mache.
my_sprite.src_rect.set( 0, 0, grafik.width / 7, grafik.height)
# Nun ist mir noch wichtig, dass wenn ich die Y Koordinate angebe
# ich damit die Stelle meine, wo seine Füße sind, nicht sein Kopf,
# weswegen ich die angezeigte Grafik ein wenig verschiebe:
my_sprite.oy = -grafik.height
# Fertig. Nun noch platzieren und ich habe meinen Helden auf dem
# Bildschirm.
my_sprite.x =  96
my_sprite.y = 288

Klassen Methoden

Sprite.new([viewport])

Erzeugt eine neue Instanz der Klasse Sprite und weißt ihr einen Viewport zu. Die Angabe des Viewports ist optional, wird keiner angegeben, so wird sie trotzdem im Spielfenster angezeigt.

Methoden

dispose

Gibt die verwendeten Ressourcen frei und entfernt den Sprite vom Screen. Wenn der Sprite bereits freigegeben wurde passiert nichts.

In RGSS1 wird diese Methode automatisch aufgerufen, wenn der zugewiesene Viewport diesen Aufruf erhält.

disposed?

Gibt einen Wahrheitswert zurück, ob diese Spriteinstanz freigegeben wurde.

viewport (RGSS)

Gibt den Viewport zurück, der beim erstellen der Instanz angegeben wurde.

In RGSS2 ist viewport ein Attribut und man kann einem Sprite beliebig andere Viewports zuweisen.

flash(color, duration)

Lässt den Sprite in der angegebenen Farbe aufleuchten. Duration gibt die Anzahl der Frames an, in der der Viewport aufleuchten soll.

Wenn als color nil übergeben wird, verschwindet der Sprite während dem Aufleuchten.

update

Aktualisiert den Flash-Effekt sowie in RGSS2 zusätzlich den wave-Effekt.

Normalerweise sollte diese Methode einmal pro Frame aufgerufen werden. Wird keiner dieser Effekte für den Sprite benutzt, ist es nicht nötig die Methode regelmäßig aufzurufen.

width (RGSS2)

Gibt die Breite des Sprites zurück. Dies ist equivalent zum Aufruf
.src_rect.width.

height (RGSS2)

Gibt die Höhe des Sprites zurück. Dies ist equivalent zum Aufruf
.src_rect.height.

Attribute

bitmap

Referenziert auf die Bitmap, welche der Sprite anzeigt.

src_rect

Der Bereich (Rect) der Bitmap, der angezeigt werden soll. Standardmäßig ist dieses Rect mit ( 0, 0, bitmap.width, bitmap.height) belegt. Liegt ein Teil des src_rect ausserhalb der Bitmapfläche so wird dort nichts angezeigt, bzw. der Bereich, der unter dem Sprite liegt, ist zu sehen.

viewport (RGSS2)

Referenziert auf den Viewport der dem Sprite zugewiesen ist.

Nur in RGSS2 kann der Viewport eines Sprites gewechselt werden.

visible

Gibt an, ob der Sprite angezeigt wird, oder nicht. Das Attribut speichert einen Wahrheitswert.

x

Die X Koordniate des Sprites.

y

Die Y Koordinate des Sprites.

z

Die Z Koordinate des Sprites. Wenn zwei Grafiken sich überschneiden, wird die Grafik mit dem geringeren Z-Wert von der mit dem größeren Überlagert. Bei gleichem Z-Wert, wird die später erzeugte Grafik über der älteren angezeigt.

In RGSS2 kommt zusätzlich hinzu, das bei selben Z-Wert, wenn sich der Y Wert unterscheidet, unabhängig vom Zeitpunkt des Erstellens die Grafik oben liegt, die den größeren Y Wert hat.

ox

Die Abweichung des Sprites von seiner X Koordinate.

oy

Die Abweichung des Sprites von seiner Y Koordinate.

zoom_x

Der Prozentwert der Streckung auf der X Achse. 1.0 ist die normale Größe, entspricht also 100%. Für ein minimieren werden Werte zwischen 1.0 und 0.0 gewählt.

zoom_y

Der Prozentwert der Streckung auf der Y Achse. 1.0 ist die normale Größe, entspricht also 100%. Für ein minimieren werden Werte zwischen 1.0 und 0.0 gewählt.

angle

Der Rotationswikel des Sprites. Der Sprite kann über dieses Attribut bis um 360° im Uhrzeigersinn gedreht werden, bei Initialisierung ist dieser Wert auf Null gesetzt. Der Sprite rotiert dabei um den relativen Punkt (ox|oy), setzt man diesen beispielsweise in die Mitte der angezeigten Grafik, rotiert diese auch um ihren Mittelpunkt.

Das zeichnen eines gedrehten Sprites ist zeitintensiv weswegen diese Funktion nicht unbedingt oft genutzt werden sollte, um die Performance zu schonen.

wave_amp (RGSS2)

In RGSS2 ist für Sprites ein wave-Effekt, oder auch raster scroll Effekt implementiert. Die Auslenkung ist über eine sinusförmige Funktion definiert, wobei wave_amp die Amplitude der Funktion in Pixeln angiebt.

wave_length (RGSS2)

Die Frequenz der Funktion, angegeben in der Anzahl der Pixel.

wave_speed (RGSS2)

Gibt die Geschwindigkeit der Animation an. Je größer der Wert desto schneller die Animation. Per Standard liegt der Wert bei 360.

wave_phase (RGSS2)

Die aktuelle Auslenkung der obersten Pixelzeile des Sprites, welche bis zu 360° betragen kann. Dieser Wert ändert sich bei jedem update des wave Effekts und es ist nicht nötig ihn selbst zu setzen, sollange man nicht 2 Sprites haben möchte, welche in ihrem wave-Effekt synchron laufen.

mirror

Ein Wahrheitswert ob die angezeigte Grafik horizontal gespiegelt ist. Wenn man den Wert auf TRUE setzt, wird der Sprite gespiegelt gezeichnet.

bush_depth

Dieser Wert gibt an, wieviele Pixel vom unteren Rand des Sprites semitransparent angezeigt werden sollen.

Dies kann benutzt werden, um zum Beispiel die Füße des Helden im Wasser des Sees leicht verschwinden zu lassen.

Der standardwert ist Null, kleinere Werte haben keinen sichtbaren Effekt.

bush_opacity (RGSS2)

Dieses Attribut gibt den Wert der opacity des Bereichs vom Sprite an, der vom bush_depth beschrieben wird. Werte ausserhalb des Bereichs von 0 bis 255 werden automatisch auf die Grenzen korrigiert.

Die bush_opacity wird mit der normalen opacity verrechnet, das bedeutet wenn opacity und bush_opacity den Wert 128 haben, wird der bush-Bereich mit einer opacity von 64 gezeigt. In RGSS1 kann dieser Wert nicht geändert werden und liegt bei 128.

opacity

Die Deckkraft des Sprites (0-255). Mit abnehmenden Wert steigt die Transparenz. Werte ausserhalb des Bereichs werden automatisch auf die Grenzen korrigiert.

Code Beispiel:

def opacity= value
  @opacity = [ [0,value].max , 255 ].min
end

blend_type

Der blending mode (0: normal, 1: addition, 2: subtraction).

color

Eine Farbe (Color) mit der alle Farben des Sprites vor dem auf den Screen zeichnen gemischt werden. Der Alphawert bestimmt den Anteil der Farbänderung.

Wird seperat von Farbänderungen durch den flash effect gehandhabt.

tone

Der Farbton des Sprites (Tone)

verwandte Themen