Rundenstrategie: Spieler geht in Bank-->jetzt aktion, aber "kollision" geht nicht.

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

  • Rundenstrategie: Spieler geht in Bank-->jetzt aktion, aber "kollision" geht nicht.

    Hi,

    ich habe zwei Objekte, obj_Spieler und obj_Bank. Nun ich kann obj_Spiler mit den Pfeiltasten bewegen. Wenn dieser auf dem Bank-Feld ist, dann soll ein Code ausgeführt werden.

    Mein Problem ist, das ich das Event "Kollision" von D&D hierfür verwendet habe und der Spieler gar nicht auf das Feld von Bank kommt, sondern immer davor stehen bleibt. Der zugehörige Code wird zwar ausgeführt nur die Spieler-Figur soll hierbei auf dem Bank-Feld landen.

    Wie mache ich das am einfachsten?




    JUBBA
    Langfristig habe ich vor ein Spiel zu entwickeln ähnlich wie das Brettspiel "Die Siedler von Catan".
    Nach Möglichkeit sogar Onlinefähig. Ein weiter weg, ich weiß!!!

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

  • 1. Möglichkeit:
    Stell den Bank-Sprite auf Center!
    Nun gehst du ins Step Event und gibst das ein:

    GML-Quellcode

    1. if position_meeting(x,y,obj_Bank)
    2. {
    3. // Dein Befehl
    4. }



    2. Möglichkeit
    Wenn die Bank etwas größer ist, als ich vermute, würde ich ein weiteres Objekt (obj_wand) benutzen
    Dieses Objekt setzt du dann ein bisschen weiter und höher als die Grenze wo der Spieler sitzen darf. Dann nimmst du wieder die Weise, die du vorher hattest.

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

  • RE: Rundenstrategie: Spieler geht in Bank-->jetzt aktion, aber "kollision" geht nicht.

    mach doch eine Variable, die prüft ob der Spieler drauf steht.
    Im Collision-Event wird überprüft, ob diese Variable 0 ist. Wenn ja, springt der Spieler auf das Feld(x+=,y+=) und die Prüfvariable wird gleich 1.

    Im Stepevent des Feldes passiert dann das hier:

    GML-Quellcode

    1. if not position_meeting(x,y,obj_spieler)
    2. pruefvariable = 0

    Somit wird, wenn der Spieler das Feld verlässt, die Bank wieder frei.

    Ergebnis: Der Spieler landet im Feld und die Aktion wird nur einmal ausgeführt.

  • @Shadow
    Ja, Bank war auf Solid. Der Spieler kommt jetzt auf das Feld mit der Bank und das Script scr_Bank_menu wird ausgeführt.

    Nur weiß ich jetzt nicht wie ich das am besten machen soll.
    Der Spieler soll nun eine Aufforderung bekommen einen Zahl einzugeben, die dann einem Menüpunkt entsprciht.

    Im Moment habe ich das versucht so zu lösen geht aber nicht und außerdem habe ich nur drei Auswahlmöglichkeiten!

    Quellcode

    1. var h
    2. {
    3. screen_redraw()
    4. h = show_message_ext("BANK-MENU","RAUBÜBERFALL","SCHUTZGELD","Nächster")
    5. switch h
    6. {
    7. case 1: scr_Raubueberfall(Raubueberfallwert)break;
    8. case 2: scr_Schutzgeld(Schutzgeldwert) break;
    9. case 3: scr_Naechster() break;
    10. }
    11. }
    Alles anzeigen

    Wenn ich z.Bsp auf "Nächster" Klicke, dann passiert gar nichts und das Menü bleibt sichtbar.

    @Woku und @Merko
    eure Möglichkeiten habe ich nicht ausprobiert, weil das problem mit "SOLID wegklicken" gelöst war!
    Langfristig habe ich vor ein Spiel zu entwickeln ähnlich wie das Brettspiel "Die Siedler von Catan".
    Nach Möglichkeit sogar Onlinefähig. Ein weiter weg, ich weiß!!!
  • Benutzt Du ein Grid? Wenn die Figuren immer nur AUF den einzelnen Feldern sind und nicht pixelweise bewegt werden, vereinfacht das die Kollisionsabfragen, da bietet sich das doch an. Vielleicht kriegst Du mit nem Grid besser System rein oder so.

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

  • mehr als drei optionen sind bei show_message_ext nicht möglich. du kannst aber mit einem menu arbeiten:

    GML-Quellcode

    1. var h
    2. {
    3. h = show_menu("BANK-MENU|RAUBÜBERFALL|SCHUTZGELD|Nächster",100)
    4. switch h
    5. {
    6. case 100: exit; break;
    7. case 0: show_message('1') break;
    8. case 1: show_message('2') break;
    9. case 2: show_message('3') break;
    10. case 3: show_message('4') break;
    11. }
    12. }
    Alles anzeigen

    nebenbei ist screen_redraw() an dieser stelle nutzlos, weil du keine draw funktionen verwendest, die im folgenden step angezeigt werden sollen.
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x