S
t
a
r
t
Tagebuch
Tagebuch
egg-O-shOOter herunterladen
Herunterladen
Wie funktioniert egg-O-shOOter ?
Einblick
Häufig gestellte Fragen
Fragen?
egg-O-shOOter Futter
Futter
Links
Verweise
I
m
p
r
e
s
s
u
m
Click here for the english version.

In dieser Rubrik könnt ihr die Umgestaltung des egg-O-shOOters nach euren eigenen Vorstellungen erlernen.
<<<     Objektrotation 2     >>>

Verpassen wir dem schrägen Vogel des vorangegangenen Kapitels endlich seine Flügel, damit sein Erscheinungsbild die vollkommene Eleganz erhält.
Bei der hektisch mit den Flügeln schlagenden Fliege hatten wir uns des Bildwechsels bedient, um dieser das Fliegen beizubringen. Dieser Trick funktioniert bei der kleinen quirligen Fliege mit zwei abwechselden Bildern recht gut. Wenn ihr jedoch mit den Anzeigedauern der beiden Bildern etwas gespielt habt, ist euch sicher aufgefallen, dass der Flügelschlag umso 'abgehackter' wirkt, je langsamer die Fliege mit den Flügeln wackelt. Da unser Vogel ein eher ruhiger Geselle ist, würde der Bildwechsel-Trick nicht allzu gut wirken. Ihr könntet natürlich mehr als nur zwei Bilder erstellen, um so noch Zwischenstufen einzufügen und den Übergang zwischen 'Flügel oben' und 'Flügel unten' glatter zu gestalten, aber einfacher geht's mit Hilfe von Objektrotation. Rotation haben wir schon einmal kurz eingesetzt, um die Fliege nach einem Treffer nach unten trudeln zu lassen. Benutzen wir den Effekt nun, um dem schrägen Vogel Flügel wachsen zu lassen. Fügt dem vorangegangenen Beispiel ein viertes Objekt für den Vogelflügel ein:

#1#
ObjectNumber=4       #1#Fluegel schraeger Vogel / Wing of odd bird
ObjectFront=1
ObjectStartActive=1
ObjectTexture=80
ObjectF=-1
ObjectD=-1
ObjectSecMin=-1
ObjectSecMax=-1
ObjectConnect=1
ObjectKoordPre=-1
ObjectHitDirection=0
ObjectXMin=+20
ObjectXMax=+20
ObjectYMin=+5
ObjectYMax=+5
ObjectDMin=40
ObjectDMax=40
ObjectAMin=0
ObjectAMax=0
ObjectVXMin=0
ObjectVXMax=0
ObjectVYMin=0
ObjectVYMax=0
ObjectVRotMin=100
ObjectVRotMax=100
ObjectRotAxis=1
ObjectVGrowMin=0
ObjectVGrowMax=0
ObjectGravMin=0
ObjectGravMax=0
ObjectMoveXMin=-800
ObjectMoveXMax=+1000
ObjectMoveYMin=-1000
ObjectMoveYMax=+1000
ObjectMoveAMin=0
ObjectMoveAMax=+180
ObjectMoveRMin=1
ObjectMoveRMax=1000
ObjectMoveType=3
ObjectType=1
ObjectBenefitMin=*0,*0,*0,*0,*0,*0,*0,*0,*0,*0,*0,*0,*0
ObjectBenefitMax=*0,*0,*0,*0,*0,*0,*0,*0,*0,*0,*0,*0,*0
ObjectMirror=0
ObjectMovePointing=0
ObjectHitSound=
ObjectAppearSound=
ObjectHitTextEnglish=
ObjectHitTextGerman=

Besondere Beachtung solltet ihr den für die Rotation zuständigen Variablen widmen. ObjectRotAxis gibt an, um welche Achse (X, Y oder Z) die Rotation erfolgt, ObjectVRotMin/Max gibt die Rotationsgeschwindigkeit an und ObjectMoveAMin/Max begrenzt die Rotation auf bestimmte Winkel.
Ihr habt das Beispiel gestartet und findet, dass der Flügelschlag etwas merkwürdig aussieht? Da habt ihr vollkommen recht!
Objekte rotieren immer um ihren Mittelpunkt bzw. ihre Mitellinie und dummerweise stimmen Bildmittelpunkt des Flügels und (gewünschte) Rotationsachse nicht überein. Bei den 'normalen' Vögeln im egg-O-shOOter habe ich mich der folgenden Lösung bedient:
Projektfenster Gimp
Ich habe nur die obere Hälfte des Bildes genutzt, um einen Vogelflügel zu zeichnen. Damit liegt die Rotationsachse an der Unterkante des Flügels, während diese beim Flügel des schrägen Vogels mitten durch geht.
Nutzen wir doch die im vorherigen Kapitel erlernte Fähigkeit, Objekte miteinander zu verbinden zur Korrektur der Rotationsachse. Dazu lassen wir anstelle des Flügels ein sogenanntes 'Phantomobjekt', also eine nicht sichtbare Grafik rotieren und verbinden den Flügel dann mit diesem Phantomobjekt.

#1#
ObjectNumber=5       #1#'Phantomobjekt' Drehpunkt Fluegel / 'Phantom' object turningpoint wing
ObjectFront=1
ObjectStartActive=1
ObjectTexture=73
ObjectF=-1
ObjectD=-1
ObjectSecMin=-1
ObjectSecMax=-1
ObjectConnect=1
ObjectKoordPre=-1
ObjectHitDirection=0
ObjectXMin=+20
ObjectXMax=+20
ObjectYMin=+5
ObjectYMax=+5
ObjectDMin=10
ObjectDMax=10
ObjectAMin=0
ObjectAMax=0
ObjectVXMin=0
ObjectVXMax=0
ObjectVYMin=0
ObjectVYMax=0
ObjectVRotMin=100
ObjectVRotMax=100
ObjectRotAxis=1
ObjectVGrowMin=0
ObjectVGrowMax=0
ObjectGravMin=0
ObjectGravMax=0
ObjectMoveXMin=-800
ObjectMoveXMax=+1000
ObjectMoveYMin=-1000
ObjectMoveYMax=+1000
ObjectMoveAMin=0
ObjectMoveAMax=+180
ObjectMoveRMin=1
ObjectMoveRMax=1000
ObjectMoveType=3
ObjectType=1
ObjectBenefitMin=*0,*0,*0,*0,*0,*0,*0,*0,*0,*0,*0,*0,*0
ObjectBenefitMax=*0,*0,*0,*0,*0,*0,*0,*0,*0,*0,*0,*0,*0
ObjectMirror=0
ObjectMovePointing=0
ObjectHitSound=
ObjectAppearSound=
ObjectHitTextEnglish=
ObjectHitTextGerman=

Dieses Phantomobjekt besitzt die gleichen Variablenwerte wie zuvor unser Flügel. Lediglich ObjectNumer=5, ObjectTexture=73 und ObjectDMin/Max=20 sind verschieden. Als Grafik habe ich den Apfel verwendet und diesen im Durchmesser recht klein gemacht. Das Apfel-Bild dient nur zur Demonstration des Sachverhaltes. Das werden wir weiter unten noch korrigieren.
Die Variablen von Objekt Nummer 4, unserem Flügel müssen noch wie folgt angepasst werden:

ObjectConnect=5 (Wir verbinden den Flügel jetzt mit dem Phantomobjekt)
ObjectYMin/Max=+40 (Wir verschieben damit den Flügel mit seiner Unterkante an den Mittelpunkt des Phantomobjektes)
ObjectXMin/Max=0 (Der Flügel ist in X-Richtung relativ zum Phantomobjektes nicht verschoben)
ObjectVRotMin/Max=0 (Es rotiert das Phantomobjekt und nicht mehr unser Flügel!)

Screenshot egg-O-shOOter
Sieht doch schon richtig nach Vogelflug aus. Der Apfel stört natürlich ein wenig das ansonsten makellose Äußere des schrägen Vogels. Das können wir auf zweierlei Arten ändern. Wenn wir ObjectDMin/Max des Phantomobjektes auf den Wert 0 setzen, wird der Apfel so klein, dass er nicht mehr auszumachen ist. Wir können anstelle der Apfel-Grafik aber auch ein 'unsichtbares Bild' verwenden. Wie ihr in dem Kapitel zu den Hasengrafiken gelernt habt, könnt ihr transparente Bildeffekte generieren. Ein derart unsichtbares Bild existiert bereits, nämlich 'object041.bmp + object041_m.bmp'. Verwendet wird das unter anderem auch als unsichtbares Trefferfeld vor der Raupe in Spielstufe 3. Wenn ihr dieses trefft, kehrt die Raupe ihre Bewegungsrichtung um und kriecht zum Chamaeleon.
Setzt ObjectTexture=41 (bei Objekt Nummer 5) und schon passt die Optik des Vogels perfekt.
<<<Zurück zu Objektrotation 1          Weiter zu Kettenglieder>>>