3 Probleme

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hallo liebe Game Maker!

    Ich habe da ein, zwei Dinge die einfach nicht lösen kann und die mir schon sehr, sehr lange zu schaffen machen. Doch nun da ich mich des Endes meiner Game Engine nähere kann ich das nicht länger verschieben. Deshalb möchte ich euch fragen ob ihr mir damit helfen könnt.
    Ich habe Folgende Probleme:

    aaalso...

    1: Ich benötige ein Script das abfragt, ob "Character" mit "Schalter" collidiert. Mit D&D kann ich das auch, dass Problem ist nur das, dass Script weder in den Character gepackt wird, noch in den Schalter. Das kommt dann in irgend ein anderes Object. Somit funzt es mit D&D nicht.

    2: Dieses Problem hab ich schon sehr lange, und versteh einfach nicht es zu lösen.
    Ich werde es an Hand eines Beispiels in meinem Game erklären.

    In meinem Spiel habe ich "Kanonen" die einen in die Höhe katapultieren. (So ähnlich wie bei Donkey Kong Country) Jedesmal wenn mein Character da rausgefeuert wird wird ein neues Object erstellt, und zwar eine Art "Staub". Also so:

    (Kanone.x, Kanone.y)

    Hier das Problem, da ich mehrere Kanonen im selben Room habe wird der Staub bei JEDER Kanone erstellt. Ich möchte aber das der Staub nur bei der Kanone erstellt wird die auch tatsächlich von meinem Character benutzt wurde. Muss ich da die ID bestimmen? Wenn ja wie? Dieses Problem habe ich mit vielen Dingen im Spiel und es ist wichtig das ich das gelöst bekomme. Vielleicht habt ihr ja ein Tut oder Example? (Muss aber nicht)

    3: Wenn mein Character sich einem Wasserfall nähert, soll ein Sound "eingeblendet" werden. Das heisst je näher der Character ist, desto lauter der sound, und umgekehrt. (je weiter fort, desto leiser)

    Diese Nüsse kann ich einfach nicht knacken, ansonsten lern ich immer mehr GML und hab schon viel von meinem Game fertig. Kann es kaum erwarten es ins Net zu stellen, doch bis dahin ist es noch ein langer Weg. Egal, wäre schön wenn ihr mir damit helfen könntet.

    Danke!

    kimi
    DU BIST, WAS DU ISST!!
  • das erste problem versteh ich noch nich ^^;

    aber beim zweiten machstes so:
    packst ein script dahin wo eigentlich dein drag n drop command ist und schreibst das da rein:

    instance_create(x,y,obj_staub)

    damit kreierst du das object "obj_staub" bei der x und y koordinate von dem object das diesen script aufruft...

    hoffe das hilft ^^

    achso, zum dritten:

    sagen wir dein sound heisst se_waterfall
    dein object das den wasserfall sound macht heisst obj_waterfall

    im create event von deinem spieler machste folgenden code rein:

    sound_volume(se_waterfall,0)
    //das würde die lautstärke von se_waterfall auf 0 setzen, also aus
    //dann machste dies ins step event

    if distance_to_object(obj_waterfall) < 100
    {
    sound_volume(se_waterfall,1)
    }if distance_to_object(obj_waterfall) < 200
    {
    sound_volume(se_waterfall,0.9)
    }if distance_to_object(obj_waterfall) < 300
    {
    sound_volume(se_waterfall,0.8)
    }if distance_to_object(obj_waterfall) < 400
    {
    sound_volume(se_waterfall,0.7)
    }if distance_to_object(obj_waterfall) < 500
    {
    sound_volume(se_waterfall,0.6)
    }if distance_to_object(obj_waterfall) < 600
    {
    sound_volume(se_waterfall,0.5)
    }if distance_to_object(obj_waterfall) < 700
    {
    sound_volume(se_waterfall,0.4)
    }if distance_to_object(obj_waterfall) < 800
    {
    sound_volume(se_waterfall,0.3)
    }if distance_to_object(obj_waterfall) < 900
    {
    sound_volume(se_waterfall,0.2)
    }

    if distance_to_object(obj_waterfall) < 1000
    {
    sound_volume(se_waterfall,0.1)
    }


    //es wird also jetzt die ganze zeit gecheckt wie weit du von dem objekt "obj_waterfall" entfernt bist...wenn du weniger als 1000 pixel entfernt bist ist der sound 0.1 laut...recht leise

    wenn du aber weniger als 100 pixel dran bist ist der sound auf maximum, also recht laut...hoffe das bringt dich voran

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von BlaXun ()

  • Zum ersten:

    GML-Quellcode

    1. ii=instance_nearest(obj_player.x,obj_player.y,obj_schalter);
    2. if(ii!=0)
    3. {
    4. if(point_distance(ii.x,ii.y,obj_player.x,obj_player.y)<32)//32 durch Distanz ersetzen
    5. {
    6. //Die Person ist in der Nähe des Schalters!
    7. }
    8. }
    Zum zweiten:

    GML-Quellcode

    1. //Beim Abfeuern ausführen
    2. ii=instance_nearest(obj_player.x,obj_player.y,obj_kanone);
    3. if(ii!=0)
    4. {
    5. instance_create(ii.x,ii.y,obj_staub);
    6. }
    Zum dritten:

    GML-Quellcode

    1. ii=instance_nearest(obj_player.x,obj_player.y,obj_waterfall);
    2. if(ii!=0)
    3. {
    4. if(point_distance(ii.x,ii.y,obj_player.x,obj_player.y)<1000)
    5. {
    6. sound_volume(snd_waterfall,(1000-point_distance(ii.x,ii.y,obj_player.x,obj_player.y))/1000)
    7. }
    8. else
    9. {
    10. sound_volume(snd_waterfall,0);
    11. }
    12. }
    Alles anzeigen

    Verkauft! :P

    Dragoon
    int (*x(*x(int))[5])(int*);
    Confused? Yes, it's C!
  • Danke an alle!

    @Dragoon: "Zum Dritten" funktioniert nicht bei mir. Der sound wird einfach gar nicht abgespielt. Wo kommt das script denn rein?

    @Blaxun: Hab deine Vorschläge noch nicht alle probiert aber trotzdem danke. Werds noch machen. :D

    Hier hab ich eine GM6 angehängt die das 2.Problem nochmal darstellt, nur das die Gegenstände anders sind, also keine Kanonen. Wäre super wenn ihr das euch mal angucken könntet.

    Ich will machen, das wenn die Kugel (Character) einen der Rubine berührt, der "Effekt" (rotierendes Plättchen) immer an dem Rubin erstellt wird, der auch tatsächlich von der Kugel berührt wurde.

    Bisher wird der Effekt immer an dem Rubin erstellt, der zuerst in den Room gestellt wurde.

    Achja, stört euch nicht an dem tanzenden Buschmann, der ist nur zum Spaß... :D :D :D
    Dateien
    • needhelp.zip

      (28,76 kB, 113 mal heruntergeladen, zuletzt: )
    DU BIST, WAS DU ISST!!
  • Also ich hab mein 2. Script eingefügt und es hat schön funktioniert. Zusätzlich habe ich noch das 3. Script in Bezug auf den Buschmann eingebaut und auch das funktioniert einwandfrei. Die Datei ist angehängt.

    Dragoon
    Dateien
    • needhelp.zip

      (28,88 kB, 111 mal heruntergeladen, zuletzt: )
    int (*x(*x(int))[5])(int*);
    Confused? Yes, it's C!
  • @ Blaxun: Bevor ich 10 if-Abfragen aneinanderreihe überlege ich, ob man das nicht irgendwie in eine Formel kriegt. Bei diesem linearen Beispiel würde eine Zeile völlig ausreichen, und zwar sowas änhliches wie Volume = Faktor / Distance. Um genau zu sein, ich hab das irgendwann mal so gelöst:

    GML-Quellcode

    1. vol= 1 - distance_to_object(jetparent) / 1600; pan=(instance_nearest(x,y,jetparent).x-x)/2000;
    2. if (vol<0) vol=0;
    3. sound_volume(jetsound,vol); sound_pan(jetsound,pan) }


    wobei die Faktoren 1600 und 2000 natürlich angepasst werden müssen

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Melancor ()

  • Danke an alle!

    Ich bin ein gutes Stück dadurch weitergekommen, und hab viel gelernt.

    Vielleicht werde ich bald nochmal ein Example posten, dass so ähnlich ist,
    wie dieses hier. (siehe oben) Mal sehen, vielleicht krieg ich das selber hin.

    Thanks@all
    DU BIST, WAS DU ISST!!