Teleporter Problem

  • Teleporter Problem

    Hallo Leute,

    hab mal wieder ein kleines Problem bei dem ich nicht wirklich weiterkomm.
    Ich hab einen Teleporter1 in meinem Game eingebaut. Wenn mein Player diesen berührt wird er zum Teleporter2 teleportiert.

    Nun gut. Ich will nun aber dass wenn ich dann den Teleporter2 wieder berühre dass er zum Teleporter1 teleportiert wird.
    Nun geht das ganze aber vom 1er zum 2er, dann wieder zurück zum 1er usw.

    Habs mit nem Sound versucht, solange dieser "TeleportSound" abgespielt wird kann man nicht teleportieren. Der Sound dauert ca. 2 Sek länger als die Teleportation. Erst dann kann wieder teleportiert werden. So sollte dann theoretisch wenn man sich zwei Sekunden nachdem man gerade Teleportiert wurde auf dem anderem Teleporter aufhält erst wieder zurückteleportiert werden.

    Hab das ganze so versucht:

    Collision with TelePort1

    GML-Quellcode

    1. self.speed = 0
    2. if sound_isplaying(sTelePort) = false
    3. sound_play(sTelePort)
    4. if sound_isplaying(sTelePort) = false
    5. self.x = TelePort2.x+1
    6. self.y = TelePort2.y+8


    Collision with TelePort2

    GML-Quellcode

    1. self.speed = 0
    2. if sound_isplaying(sTelePort) = false
    3. self.x = TelePort1.x+1
    4. self.y = TelePort1.y+8
    5. sound_play(sTelePort)


    Wenn ich nun aber zu einen der beiden TelePorter gehe, egal zu welchem, wird mein Player zu einem ganz anderem Punkt im Raum gebeamt (immer der gleiche).

    Weiß einer ne Lösung? Oder wo ist der Fehler in meinem Versuch, sollte doch eigtl. funktionieren?

    (Hoffe hab mich verständlich ausgedrückt xD)

    Gruß sHarivaRI
    Dieser Beitrag wurde bereits 1909 mal editiert, zuletzt von »Sharivari« (Morgen, 19:89)
  • warum machst du es nicht einfach mit d&d?

    einfach ins kollisions event mit teleporter1:
    jump to a given position (x und y werte des tele 2, wobei du bei dem x wert vielleicht etwas höher gehen solltest, damit er nicht gleich den tele2 wieder berührt)

    und ins kollisions event mit tele2:
    jump to a given position (x und y werte von tele 1)

    Gruß Geheim
  • Sharivari schrieb:

    GML-Quellcode

    1. self.x = TelePort1.x+1
    2. self.y = TelePort1.y+8

    das ist genau dein vorschlag in gml ... wird ihm also nicht sehr weiterhelfen ;)

    Edit: das self brauchst du gar nicht .. aber daran dürfte es nicht liegen.
    Probiers mal so(klammer setzung und doppelte bedingung weg gemacht):

    GML-Quellcode

    1. speed = 0
    2. if (sound_isplaying(sTelePort) = false)
    3. {sound_play(sTelePort);
    4. x = TelePort2.x+1;
    5. y = TelePort2.y+8;}

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von J@kob ()

  • @ terra:
    ja aber dann siehts ja doof aus wenn er unter den teleporter gebeamt wird xD

    @j@kob

    hm. okay jetzt wird er anscheinend zum teleporter2 gebeamt und dann direkt wieder zurück zum 1er. er jumped immerhin nichtmehr zu irgendner anderen position. und er wird beim 1.teleporter auch erst dann wieder gebeamt wenn der sound aus ist. aber beim teleport2 bleibt er nicht stehen bis der sound aus ist
    Dieser Beitrag wurde bereits 1909 mal editiert, zuletzt von »Sharivari« (Morgen, 19:89)
  • heeey.. jetzt funzts - danke =)

    nur komisch dass es an sowas liegt...
    nur jetz sind wir wieder bei folgendem problem xD:

    der room verschiebt sich nach unten rechts, und ich hab oben und links nen schwarzen balken und seh nima alles vom room x___x
    Dieser Beitrag wurde bereits 1909 mal editiert, zuletzt von »Sharivari« (Morgen, 19:89)
  • also auf jedenfall danke =)

    habs genauso wie im example. anscheinend hab ich in dem game irgendein soundbug drin.. aber bis ich den finde vergehen jahre. entweder ich geb mich mit dem schwarzem rand zufrieden oder ich such ne andere lösung, die nichts mit dem abspielen vom sound zu tun hat.

    theoretisch würds doch gehen, wenn man gebeamed wird, dass man dann erst die fläche vom TelePort2 verlassen muss und dann erst wieder gebeamed werden kann. geht bestimmt.. aber weiß nich wie ichs umsetzen soll

    irgendwas mit position_meeting .. haste ne idee?
    Dieser Beitrag wurde bereits 1909 mal editiert, zuletzt von »Sharivari« (Morgen, 19:89)
  • Mach ne Variable (kann_beamen zum Beispiel). Diese setzt du beim Beamen auf 0. Im Step-Event fragst du ab, ob du einen Teleporter berührst (mit place_meeting würde das gehen). Falls das nicht der Fall ist, setzt du die Variable wieder auf 1. Dann sollte das Beamend nur funktionieren, wenn die Variable auf 1 steht.
  • jetz gehts endlich... danke eh, vielen vielen dank :)

    fuer alle die das selbe prob haben:

    Step-Event:

    GML-Quellcode

    1. if place_meeting(x,y,TelePort1) = false
    2. if place_meeting(x,y,TelePort2) = false{
    3. kann_beamen = 1;
    4. }


    Kollisions-Event:

    GML-Quellcode

    1. if (sound_isplaying(sTelePort) = false)
    2. if kann_beamen = 1
    3. {
    4. sound_play(sTelePort);
    5. }
    6. if kann_beamen = 1
    7. {
    8. speed = 0
    9. self.x = TelePort2.x;
    10. self.y = TelePort2.y;
    11. kann_beamen = 0
    12. }
    Alles anzeigen
    Dieser Beitrag wurde bereits 1909 mal editiert, zuletzt von »Sharivari« (Morgen, 19:89)

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

  • Benutzer online 2

    2 Besucher