obj1 soll manövrierunfähig sein wenn es obj2 nicht mehr berührt

  • GM 8

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

  • obj1 soll manövrierunfähig sein wenn es obj2 nicht mehr berührt

    Hallo zusammen!

    Ich brauche mal wieder etwas Hilfe :S ! Hoffe ihr könnt mir weiter helfen...

    Mein Problem:

    Ich habe Spieler obj1
    Dann hab ich zwei weitere Objekte obj2 und obj3

    obj1 wird mit den Tasten w,a,s,d gesteuert und darf nur seine Position verändern (also sich bewegen) wenn es obj2/obj3 berührt (Kollision)!

    Bei Kollision obj1 mit obj2 soll sich obj1 nur nach oben und unten bewegen, wenn ich w bzw. s drücke. a und d sollen nicht angenommen werden...
    Bei Kollision obj1 mit obj3 (edit) soll sich obj1 nur nach links und rechts bewegen, wenn ich a bzw. d drücke. w und s sollen nicht angenommen werden...

    Wenn der Spieler (obj1) beide anderen Objekte berührt, kann der Spieler sich frei in alle Richtungen bewegen.
    Wenn ich eines der beiden Objekte von obj1 nicht mehr berühre, soll meine Spielfigur die Richtungsbewegungen nicht mehr ausführen können.


    Ich hoffe mein Problem hab ich verständlich erklärt! Danke für Antworten und Hilfe im Voraus! ^^

    Seth

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

  • oh, achso.

    Hab grad versucht eine Code zu bastelln.
    Klappt aber nicht so ganz. Verstehe nicht so ganz wie sich dein Object bewegen soll.

    Könntest nochmal erklären...
    oder versuchen es selbst rauszufinden.
    Bewegen geht am einfachsten mit
    x += 4 //dabei ist 4 die geschwindigkeit. // bewegt nach rechts
    x -= 4 // bewegt nach links.
    y += 4 // bewegt nach unten
    y -= 4 // bewegt nach oben.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Danke!^^

    Wenn der Spieler nur das objekt obj2 berührt soll man nur nach oben und unten steuern können.
    Wenn der Spieler nur das objekt obj3 berührt soll man nur nach rechts und links steuern können.
    Wenn der Spieler beide Objekte (obj2 und obj3) berührt, kann man sich in alle Richtungen bewegen (hoch, runter, rechts,links...wenn man mehrere Tasten drückt kann man sich auch meinetwegen in die Richtungen dazwischen (45%,135%,usw.) bewegen).

    hm... hoffe das war verständlich :S
  • mach das ins step event: vom spieler

    GML-Quellcode

    1. if place_meeting(x,y,obj2)
    2. {
    3. if keyboard_check(ord('W')) then y-=4
    4. if keyboard_check(ord('S')) then y+=4
    5. }
    6. if place_meeting(x,y,obj3)
    7. {
    8. if keyboard_check(ord('A')) then x-=4
    9. if keyboard_check(ord('D')) then x+=4
    10. }
    11. if place_meeting(x,y,obj2) && place_meeting(x,y,obj3)
    12. {
    13. if keyboard_check(ord('W')) then y-=4
    14. if keyboard_check(ord('S')) then y+=4
    15. if keyboard_check(ord('A')) then x-=4
    16. if keyboard_check(ord('D')) then x+=4
    17. }
    Alles anzeigen


    edit: code ausgebessert.
    :saint:

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Tice ()

  • GML-Quellcode

    1. if place_meeting(x,y,obj2) && place_meeting(x,y,obj3)
    2. {
    3. if keyboard_check(vk_up)
    4. {
    5. y -= SPEED
    6. }
    7. if keyboard_check(vk_down)
    8. {
    9. y += SPEED
    10. }
    11. if keyboard_check(vk_left)
    12. {
    13. x -= SPEED
    14. }
    15. if keyboard_check(vk_right)
    16. {
    17. x += SPEED
    18. }
    19. }
    20. else if place_meeting(x,y,obj2)
    21. {
    22. if keyboard_check(vk_up)
    23. {
    24. y -= SPEED
    25. }
    26. if keyboard_check(vk_down)
    27. {
    28. y += SPEED
    29. }
    30. }
    31. else if place_meeting(x,y,obj3)
    32. {
    33. if keyboard_check(vk_left)
    34. {
    35. x -= SPEED
    36. }
    37. if keyboard_check(vk_right)
    38. {
    39. x += SPEED
    40. }
    41. }
    Alles anzeigen

    Bei SPEED kommt die Geschwindigkeit hin.

    EDIT: Mist, schon wieder zu spät. :cursing:
  • ach quatsch man braucht doch nur diesen code hier:

    GML-Quellcode

    1. if place_meeting(x,y,obj2)
    2. {
    3. if keyboard_check(ord('W')) then y-=4
    4. if keyboard_check(ord('S')) then y+=4
    5. }
    6. if place_meeting(x,y,obj3)
    7. {
    8. if keyboard_check(ord('A')) then x-=4
    9. if keyboard_check(ord('D')) then x+=4
    10. }
    Alles anzeigen


    hiern example
    file-upload.net/download-2494779/example.gmk.html
    :saint:

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

  • Danke euch allen! :D

    Ich hab jetzt den letzten Code (von Tice) genommen... der scheint mir am richtigsten und auch einfachsten ^=^
    Hab es auch ausprobiert und funktioniert auch!
    Mein Versuch war es gewesen, (fast) alles mit Variabeln zu machen. Aber ich mehr schon^^ das war viel zu kompliziert!

    Jetzt klappt alles und ich danke euch nochmals!
    Seth

    PS @ DragonGamer: Sry, du meintest, dass ich zweimal obj2 geschrieben hatte :whistling: hab's geändert...



    zussammengeschoben:


    Ich bin's nochmal:

    Ich hab es jetzt schon öftes getestet und mir fiel immer wieder auf, dass ich nur mich bewegen kann,
    wenn der Spieler genau am x,y Punkt (also 0|0 des Sprites) die beiden obj2 und obj3 berührt. oder versteh ich das falsch?

    Wie bekomm ich es hin, dass ich mich IMMER bewegen kann, egal wo mein Spieler die Objekte berührt?

    Seth

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Seth ()

  • if place_free(x+hspeed,y) == false
    speed=5

    if place_free(x,y+vspeed) == false
    speed=5

    dann musst du die objecte2/3
    solid machen ;)
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • husi012 schrieb:

    if place_free(x+hspeed,y) == false
    speed=5

    if place_free(x,y+vspeed) == false
    speed=5

    dann musst du die objecte2/3
    solid machen
    Ähh.. dieser Thread is 2 Jahre alt und der fragende User seit nem halben Jahr nicht mehr hier ^^ Also keine Leichenschändung hier bitte

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Benutzer online 2

    2 Besucher