Variable größer und kleiner werden lassen

    Variable größer und kleiner werden lassen

    Scheint mir eigentlich eine recht einfache Frage zu sein, komme aber nicht auf die Lösung und finde auch keinen älteren Beitrag dazu.
    Will eine Variable mit dem Wert 1 bis zu einem gewissen Punkt, sagen mir mal 0.7 schrumpfen lassen, und ab dann bis 1,3 wachsen lassen. Ab 1,3 wieder schrumpfen lassen bis 0,7 etc. Danke für eure Hilfe :D
    Es gibt 10 Arten von Menschen: Diejenigen, die Binärcode verstehen und die, die es nicht tun ^^
    Da gibt es, wie so oft, mehrere Wege. In welchen Schritten soll das geschehen? I.d.R. macht man das entweder über Step-Event, Alarm oder, wenn es um Grafik geht, im Draw. Bei Alarm kann man den Intervall easy vorgeben, bei Step gibt es da mehr zu betrachten. Wie auch immer, Du brauchst dazu noch mindestens eine Hilfsvariable, anhand Du siehst, ob es hoch oder runter gehen sollte. Vielleicht hilft Dir das als Ansatz, bevor ich fertigen Code poste. ;)
    Byte GameMaker Magazin - Die online Zeitung für Spieleenwicklung, Freeware und mehr!
    Die Idee hatte ich auch schon mit dem Step Event, und dass ich wohl mind. eine weitere Variable brauche dachte ich mir auch schon, nur bin ich damit etwas überfordert ?( :D
    Es gibt 10 Arten von Menschen: Diejenigen, die Binärcode verstehen und die, die es nicht tun ^^
    Mal auf die schnelle aus dem Ärmel geschüttelt für lineares wachsen und schrumpfen, geht bestimmt schöner.

    GML-Quellcode

    1. //Createevent
    2. a=1;
    3. maxa=1.3;
    4. mina=0.7;
    5. b=0.01;
    6. //Stepevent
    7. a+=b;
    8. if a>=maxa
    9. {
    10. a=maxa;
    11. b*=-1;
    12. }
    13. else if a<=mina
    14. {
    15. a=mina;
    16. b*=-1;
    17. }


    Alternativ könnte man auch eine Formel mit Sinus verwenden, wenn es schön flüssig zwischen zwei werten pendeln soll.
    Create:

    GML-Quellcode

    1. var1 = 0; //Deine Umschaltvariable
    2. var2 = 1; //Deine Zahl


    Step:

    GML-Quellcode

    1. switch(var1)
    2. {
    3. case 0:
    4. if (var2 > 0.7 )
    5. {
    6. var2 -= 0.1;
    7. }
    8. else if (var2 <= 0.7)
    9. {
    10. var1 = 1;
    11. }
    12. break;
    13. case 1:
    14. if (var2 < 1.3 )
    15. {
    16. var2 += 0.1;
    17. }
    18. else if (var2 >= 1.3)
    19. {
    20. var1 = 0;
    21. }
    22. break;
    23. }


    Nicht getestet, sollte aber so funktionieren

    #Edit
    TrunX war schneller, nimm lieber seine Lösung, sieht besser aus :thumbsup:
    Demo: Link


    Create:

    GML-Quellcode

    1. weiteX = 100; // 100 nach links von der mitte aus und 100 nach rechts von der mitte aus
    2. mitteX = 200; // der mittelpunkt
    3. i = 0; //Zählvar
    4. spd = 0.1; // movespeed

    Step: (der eigentliche Code für das Schwingen des Wertes

    GML-Quellcode

    1. x = mitteX + sin(i) * weiteX;
    2. i += spd;



    Draw:

    GML-Quellcode

    1. //Veranschaulichung
    2. draw_circle(x,100,10,0);
    • Bluetooth Multiplayer
    • Wasser App: play.google.com/store/apps/details?id=com.gaming_apps.water_physics_simulation
    • :shifty: :motz: