Hi!
Da ich zuhause keinen INternetzugang habe, frage ich nun alles auf einmal:
1.
Kann man X_Rotation & X_Camera zusammen benutzen? Irgendwie habe ich das nicht hinbekommen...
2.
Hierbei habe ich wirklich ein kleines Problem: Es geht um Rauch. Ich habe mit X_Sprite eine Spur hinter meine Raketen gezogen, d.h. meine Rakete bewegt sich um den Vektor x, y, z in einer gewissen Zeit in eine Richtung und ein Sprite aus einer Animationsfolge wird dort erzeugt und spielt dann dort seine Lebensdauer ab. In meinem Fall wären das 9 Bilder.
Problem bei der Sache ist nur, daß ich mit den Skalierungen nicht klar komme. Zoome ich mit der Camera weg, wird der Rauch größer und wenn ich zu nah bin, wird er kleiner. Gibt es eine Universalformel, um die Skalierungen mit dem Kamerazoom zu verbinden?
3.
Ist für meine Rauchspur eine Function oder eine Sub effektiver? Ich frage, weil ich Speicher sparen möchte, da alleine bei der Spur kleine Ladezeiten zukommen d.h. Loadsprite...
4.
Gibt es eine Möglichkeit anzugeben ob ein Sound gerade abgespielt wird? Etwas in der Art wie "SoundActive = 1" oder so?
Mir geht es um folgendes: Wenn meine Loops durchlaufen und ich einen Kanonenschuss abgebe, dann wird dieser Sound einmal abgespielt und aus. Aber bei einem Maschinengewehr wird es kompliziert. Vor allem, weil ich dann immer wieder genau die Zeit abstimmen muß. Mit dem Befehl würde ich einfach den Sound und gleichzeitig eine kurze Animation abspielen und warten, bis mit das Programm den Wert 0 zurückgibt. Ist der Wert 0 dann gleich nochmal das ganze von vorne. Bei 20 Schuss klingt es wie ein MG. Und falls der Wert 1 ist, dann lasse ich den Loop einfach nochmal durchlaufen und erneut überprüfen, ob ein Sound gerade läuft oder nicht.
Tja, soviel zu meinen Fragen.
GLG
W.
1. X_CAMERA setzt die Kamera. X_ROTATION dreht das nächste Objekt. Willst Du die Kamera drehen:
X_ROTATION phi, 0,1,0
musst Du:
X_ROTATION -phi,0,1,0
X_PUSHMATRIX
...
X_POPMATRIX
machen - also inverse Rotattion - Besser: Kameraposition vorher berechnen.
2. Ein X_SPRITE sollte _immer_ gleich groß sein - also reativ zum X_DRAWOBJ z.B. Wenn nicht, kann das ein Bug sein, bitte Demo senden.
3. SUB/FUNCTION ist nur Style - intern ist das gleich. LOADSPRITE _immer_ vor der Hauptschleife machen!! Immer!
4. Checken, ob ein Sound läuft geht noch nicht. Muss ich mal machen... Aber: Mit LOADSOUND kann man die Anzahl der "Buffer" für diesen Sound angeben. Bei 4 kannst Du z.B. den Sound 4x abspielen, ohne dass der erste abgeschnitten wird.
Das Problem mit Punkt 4 hatte ich auch, hab wie Gernot es beschrieben hat den Buffer benutzt und dazu noch eine check-Variable, die überprüft, wieviele durchläufe seit dem letzten Schuss vergangen sind. (Alternativ könntest Du auch die Zeitdifferenz bestimmen und dann einfach bei Diff>Soundlänge den nächsten Schuss abgeben).
Diff>Soundlänge ist zwar eine gute Idee, aber irgendwie ungenau.
Aber wohl oder übel wird mir nichts anderes übrig bleiben. :-)