Blocker funtioniert nicht

  • Blocker funtioniert nicht

    Ich hab für ein Mazespiel einigew Bocker erstellt. Davon will einer nicht funktionieren obwohl alle die selben einstellungen haben.
    Dies ist der normale Blocker:

    Quellcode

    1. Sprite: spr_block
    2. Solid: true
    3. Visible: false
    4. Depth: -4
    5. Persistent: false
    6. Parent: <no parent>
    7. Mask: <same as sprite>

    Dies ist ein Blocker der einen nur durch lässt wenn man den schlüssen hat:

    Quellcode

    1. Sprite: spr_schluesselblocker1
    2. Solid: true
    3. Visible: true
    4. Depth: 0
    5. Persistent: false
    6. Parent: <no parent>
    7. Mask: <same as sprite>

    Und ides ist ein Bolcker der über einen schalter gestellt wird. Dieser Blockerfunktioniert nicht:

    Quellcode

    1. Sprite: spr_blocker1
    2. Solid: true
    3. Visible: true
    4. Depth: 0
    5. Persistent: false
    6. Parent: <no parent>
    7. Mask: <same as sprite>
    8. Create Event:
    9. execute code:
    10. global.blocker01x = x
    11. global.blocker01y = y
    Alles anzeigen


    Und hier sit das objekt das geblockt werden soll. Ich poaste davon nur den teil wo gesagt wird dieses wird geblockt:

    Quellcode

    1. Keyboard Event for <Up> Key:
    2. COMMENT: Schlüssellöcher
    3. if at relative position (0,-8) there is not object obj_schluesselblocker1
    4. if at relative position (0,-8) there is not object obj_schluesselblocker2
    5. if at relative position (0,-8) there is not object obj_schluesselblocker3
    6. COMMENT: Schalter
    7. if at relative position (0,-8) there is not object obj_blocker01
    8. COMMENT: Block
    9. if at relative position (0,-8) there is not object obj_block
    10. move relative to position (0,-8)
  • Original von Windapple
    Hm... ist das objekt was nicht geht obj_block? Weil laut Code bewegt der sich, wenn das nicht da ist.


    Nö bewegen tut sich das nicht. Der der nicht funktioniert ist spr_blocker1. Außerdem steht das sogar über den [CODE]-Eintrag.
  • Also gehen wir den Code mal durch

    if at relative position (0,-8) there is not object obj_schluesselblocker1
    if at relative position (0,-8) there is not object obj_schluesselblocker2
    if at relative position (0,-8) there is not object obj_schluesselblocker3
    --->Wenn alles zutrifft, mache
    COMMENT: Schalter

    if at relative position (0,-8) there is not object obj_blocker01
    --->Wenn das zutrifft, mache
    COMMENT: Block

    if at relative position (0,-8) there is not object obj_block
    --->Wenn das zutrifft, mache
    move relative to position (0,-8)


    Daraus resultiert, das nur das obj_block wirklich blockierende Wirkung hat.
    "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
    - Joseph Weizenbaum
  • Darauf war ich auch schon mal gekommen doch als ich versuchte das zu ändern hat garnichts mehr funktioniert. Außerdem Blockt der spr_schluesselblocker1 auch.

    Und exestiert kein Code der ihn blocken würde noch anders.
    Der einzige Code der noch dagegen exestiert für dieses spr_schluesselblocker1

    Quellcode

    1. if global.schluessel1 is larger than 0
    2. execute code:
    3. global.schluessel1 -= 1
    4. for other object: destroy the instance

    Ichh weis das ich sehr durcheinander progge aber wenn ich am spiel noch arbeite sieht das immer so durch einander aus. :D
  • Alos hab das jettz so gelöst:

    GML-Quellcode

    1. if not position_meeting(0,y-8,obj_block) or position_meeting(0,y-8,obj_blocker1) or position_meeting(0,y-8,obj_schluesselblocker1) or position_meeting(0,y-8,obj_schluesselblocker2) or position_meeting(0,y-8,obj_schluesselblocker3) {
    2. x=x+0
    3. y=y-8
    4. }

    Windapple hatte recht das nur das objekt obj_block als blocker funktionierte. Wieso obj_schluesselblocker1 teilweise geblockt hat verstehe ich nicht.

    obj_schluesselblocker1blockt jetzt vollkommen. Ldieder funktioniert der Code der in der Collions war nicht mehr.
    Hier ist der Code aus dem Kolliions Event:

    GML-Quellcode

    1. if global.schluessel1 >= 0 {
    2. global.schluessel1 -= 1
    3. with(obj_schluesselblocker1) instance_destroy();
    4. }

    Da dier nicht mehr funktioniet weil durch das vollständige Blocken keine Kollision erfolgt.
    Also habe ich disen Code in das pfeiltast (up) event mit ein gebunden:

    GML-Quellcode

    1. if global.schluessel1 >= 0 {
    2. if position_meeting(0,y-8,obj_schluesselblocker1) {
    3. global.schluessel1 -= 1
    4. with(obj_schluesselblocker1) instance_destroy();
    5. }
    6. }


    Dies funktioniert nicht. Ich dachte aber das position_meeting schaut ob sich dieses objekt an diesen Kordinaten befindet. Daher müsst e dies funktionieren. Gibt es noch ein anderes was man nehmen könnte oder was genau dies tut was ich dachte das dies bei position_meeting passiert?
  • Original von Blank

    Da dier nicht mehr funktioniet weil durch das vollständige Blocken keine Kollision erfolgt.
    Also habe ich disen Code in das pfeiltast (up) event mit ein gebunden:

    GML-Quellcode

    1. if global.schluessel1 >= 0 {
    2. if position_meeting(0,y-8,obj_schluesselblocker1) {
    3. global.schluessel1 -= 1
    4. with(obj_schluesselblocker1) instance_destroy();
    5. }
    6. }


    Dies funktioniert nicht. Ich dachte aber das position_meeting schaut ob sich dieses objekt an diesen Kordinaten befindet. Daher müsst e dies funktionieren. Gibt es noch ein anderes was man nehmen könnte oder was genau dies tut was ich dachte das dies bei position_meeting passiert?



    Ich bin zwar noch Anfänger und sage evtl. hier etwas falsches, Aber muß der schluesselblocker nicht "relativ" zum player-objekt sein?
    Was man mit Händen baut, kann auch mit Händen zerstört werden...
  • Ich hab noch mal alles nach gecheckt und habe festgestellt das alle codes falsch sind. Der weile war ich mir sicher das if position_meeting fragt ob das objekt sich dort befindet. Ich abe viel in dere Hilfedatei gekramt fand aber keine funktion die sich dafür einsetzen lise aus place_free. doch dies funktionierte auch nicht.
    Dieser Code scheint komplet falsch zu sein.

    GML-Quellcode

    1. if not position_meeting(0,y-8,obj_block) or not position_meeting(0,y-8,obj_blocker1) or not position_meeting(0,y-8,obj_schluesselblocker1) or not position_meeting(0,y-8,obj_schluesselblocker2) or not position_meeting(0,y-8,obj_schluesselblocker3) {
    2. x=x+0
    3. y=y-8
    4. }

    Wieso? wenn man die Klammern weg lässt rennt die figur überall im raum rum und wenn man die Klammern hin macht wie jetzt dann passiert garnichts.
    Ich versteh die welt nicht mehr... :heul:
  • So ich habs jetzt raus!
    Eigendlich wars ganz einfach. Und zwar so ahb ichs gemacht:

    GML-Quellcode

    1. if place_free(x,y-8)
    2. y=y-8
    3. x=x+0
    4. if place_meeting(x,y-8,obj_schluesselblocker1) {
    5. if (global.schluessel1>0) {
    6. global.schluessel1 -= 1
    7. with(obj_schluesselblocker1) instance_destroy();
    8. }
    9. }
    10. if place_meeting(x,y-8,obj_schluesselblocker2) {
    11. if (global.schluessel2>0) {
    12. global.schluessel2 -= 1
    13. with(obj_schluesselblocker2) instance_destroy();
    14. }
    15. }
    16. if place_meeting(x,y-8,obj_schluesselblocker3) {
    17. if (global.schluessel3>0) {
    18. global.schluessel3 -= 1
    19. with(obj_schluesselblocker3) instance_destroy();
    20. }
    21. }
    Alles anzeigen

    Danke für eure Hilfe!
  • Benutzer online 2

    2 Besucher