transformobj rotate + Dauer

Das Board für Schwierigkeiten beim Adventure-Machen und zum Melden von Bugs
Post Reply
japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

transformobj rotate + Dauer

Post: # 90710Post japanhonk
15 Dec 2018, 13:17

hi Leutz...

Ich versuche, ein klassisches Glücksrad zu bauen, dazu habe ich ein Soundfile, das ca 4 sek dauert.

Mittels transformobj + rotate kann ich zwar das Rad drehen, aber wie bekomme ich das hin, dass es am anfang schnell dreht und dann nacheiner bestimmten Zeit mit dem "smooth" -en Auslaufen beginnt und dann zum Ende des Soundfiles stehenbleibt ?? Mittels counter krieg ich das nicht hin, da dreht das rad erst langsam und wenn die randomnum recht klein ist, bleibt das Rad zu früh stehen. Eine Funktion , wie beim Speech Befehl wäre nützlich...

Wäre fein, wenn man die Anzahl der Umdrehungen und infinit als Option des befehls mit aufnehmen könnte - hilft mir im moment ja nicht, wäre aber nice....

Es geht zwar, dass das Rad die eingestellte Zeit braucht, um zum stehen zu kommen, aber wenn der Drehwinkel mit z.B 12 Grad nur klein gewählt wird ( per randomnum ) , dann dreht sich das Teil elend langsam und passt nicht zum Sound ( denn man fängt immer sehr schnell an und wird langsamer )

Also : schnell anfangen, die eingestellte Anzahl Umdrehungen ( mit z.B 720 Grad hab ich keine Erfolge gehabt ) schnell machen und dann in eine zeitlich definierte Auslaufphase, die vom randommäßigen Wert abhängt

( z.B 720 Grad = 2 Umdrehungen + randomnum x Grad mit geänderter Geschwindigkeit. Rad stoppt mit Auslaufen des Sounds in jedem Fall )

ich habe bisher den Eindruck, dass der Befehl Werte oberhalb von 360 Grad nicht annimmt, weil auch bei 720 Grad wird nicht schneller gedreht in derselben Zeit.

hat einer ne Idee, damit ich (richtig ) am Rad drehen kann ?

Gruß

Manni
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de

Vincent
Adventure Enthusiast
Posts: 208
Joined: 30 Sep 2008, 18:28

Re: transformobj rotate + Dauer

Post: # 90711Post Vincent
15 Dec 2018, 17:03

Ich würde dir empfehlen in Schritten zu arbeiten. Was ich meine ist ein script, das in bei jedem Durchlauf, das Rad um ein bisschen weniger dreht.
Beispiel: Irgendwo (normalerweise im Start-script, oder am Besten beim Mausclick auf das Rad etc.) wird die Anfangsgeschwindigkeit definiert.
setnum (radgeschwindigkeit;100)
Jetzt machst du eine function, die du - in meinem Fall - 200 mal wiederholen lässt, und wo das drinnen steht:
if_num(radgeschwindigkeit; >0)
{
transformobj (Rad; rotate; +[radgeschwindigkeit]; 0; 1)
setnum (radgeschwindigkeit; -0.5)
}

if_num(radgeschwindigkeit; 0)
{
(*EVENT - DAS RAD BLEIBT STEHEN *)
}
Damit wird das Rad erst sehr schnell gedreht und bremst dann pro 2 Durchläufe um 1 Grad ab (wegen -0.5)

Ich seh grad, dass du eben das probiert hast?

Ich schau mir auch gern dein file an, wenn du mich lässt.

japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Re: transformobj rotate + Dauer

Post: # 90712Post japanhonk
15 Dec 2018, 22:17

Hi,

ja, hab Folgendes ausprobiert :

Winkel von 0 an um jeweils 1 grad geändert und ( mit zeitzähler gekoppelt ) und bis 360 Grad gedreht in einer sich wiederholenden Funktion - Ergebnis : Rad dreht langsam, bei kleinen Winkeln elend langsam.

Winkel auf 360 Grad gedreht und transformobj per Funktion aufgerufen, dann randomnum gesetzt und erneut aufgerufen - Ergebnis : Rad dreht langsam, keine Änderung wie zuvor.

Winkel auf 720 Grad gesetzt und dann randomnum gesetzt und draufgerechnet. Ergebnis : wie oben zuvor.

Es passiert immer nur das Gleiche. Habe das jetzt einmal angestoßen per button und lasse es laufen, da ist es wenigstens gelegentlich mal schneller

Habe die Funktion auch schon aus dem Mainscript heraus aufgerufen , bringt alles nix

Ist der Befehl so strukturiert, wie startparticles () ? Den muss ich ja in Funktion immer wieder aufrufen, damit es immer weiter läuft.

Das Beste Ergebnis jetzt funktioniert so :

Startbutton setzt einen Bool auf true, wechselt dann auf diese Funktion , die solange läuft, bis ein Counter auf 200 kommt :

setnum (degree_counter;+1)
if_num (degree_counter;200)
setbool (wheel;false)

if_bool (wheel;true)
{
setnum (degree ; +1)
if_num (degree ; 360)
setnum (degree ; 0)
transformobj (Glücksrad1; rotate ; [degree];4000;clockwise)
}
if_bool (wheel;false)
{
randomnum (degree;360)
transformobj (Glücksrad1;rotate;[degree];4000;clockwise)
stopfunction (rotate_wheel)
}



Wenn ich nun im letzten Rotate Befehl Smooth als Zusatz benutze, gibt es je nach Winkel einen unschönen Sprung in der Drehgeschwindigkeit. Also lasse ich das weg, dann ist es einigermaßen ok.

EDIT :

Habe herausgefunden, dass der Befehl tatsächlich wie die Particlebefehle arbeitet. Daraus resultierend habe ich einen Zähler für die Geschwindigkeit bei 1000 gestartet. Ein Zeitzähler startet mit. Mit zunehmender Zeit wird der Zähler für die Geschwindigkeit mit hochgezählt und per Variable an den transform Befehl übergeben. So soll bei jedem Durchlauf der Funktion das Rad lamgsamer werden. Blöd aber immer noch : Zum Abschluss ändert das Rad seine Geschwindigkeit abrupt, wenn die Winkel kleiner als 90 oder größer als 180 Grad sind. Auch die Startgeschwindigkeit variiert seltsamerweise, obwohl ie Werte jedesmal per setnum gesetzt werden....Forschungsarbeit ist da noch von Nöten...
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de

Vincent
Adventure Enthusiast
Posts: 208
Joined: 30 Sep 2008, 18:28

Re: transformobj rotate + Dauer

Post: # 90713Post Vincent
16 Dec 2018, 13:30

Mich würde interessieren (Ben), ob es eine möglichkeit gibt, die aktuellen Grad eines Objektes als Variable abzurufen. Also so wie [xobj:object] etwa [deg:object]. Das würde solche Spielereien viel einfacher gestalten.

Zimond
Der Engine Papa
Posts: 3420
Joined: 06 Apr 2003, 19:34
Location: Krefeld
Contact:

Re: transformobj rotate + Dauer

Post: # 90718Post Zimond
02 Jan 2019, 14:23

nee das geht nicht direkt, ich würde hier aber auch eher mit festen variablen arbeiten die ich dann selber bearbeite.
Image

Post Reply