Computer löst Irrgarten

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

    • Schau mal:
      Aus der Gm Hilfe
      das alles macht lengthdir. Das hier: y+40 ist das selbe wie y+lengthdir_y(40,270)
      Du prüfst einfach ob rechts von dir, also direction-90 etwas ist.
      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
    • da hast du dann x+lengthdir_x(...)
      warum 49^0? das ergibt 1 ^^ und direction-4 macht für mich auch kein Sinn :)
      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
    • habe es gändert habe mich vertippt habe es dann gemerkt aber zu spät:/
      aber je nach dem wie der Charakter steht, muss er entweder 40 pixel in x oder in y kontrollieren.. ( wenn er nach oben geht ist rechts in x und wenn er nach rechts geht ist rechts in y)

      seit ich jetzt den Code reduziert und die If direction abfragen weggenommen habe, funktioniert auch der alte Code place_empty nicht mehr:(


    • ok es hat geklappt, jedoch hat sich herausgestellt, das die Luke unten zu klein ist, jedoch verstehe ich nicht, wieso auf einmal, gestern hat es auch noch geklappt. ausserdem besteht noch das Problem, dass wenn der Charakter jetzt nach oben geht, bleibt er stecken.
    • GML-Quellcode

      1. if(!place_free(x+lengthdir_x(speed,direction),y+lengthdir_y(speed,direction)))
      2. {
      3. var dir;
      4. dir = direction-90; //rechts
      5. if(!place_free(x+lengthdir_x(speed,dir),y+lengthdir_y(speed,dir)))
      6. {
      7. dir=direction+90; //links
      8. if(!place_free(x+lengthdir_x(speed,dir),y+lengthdir_y(speed,dir)))
      9. {
      10. dir=direction-180; //nach hinten, Sackgassen eingeschlossen
      11. }
      12. }
      13. direction = dir;
      14. }
      15. if (direction ==0)
      16. {
      17. if (place_empty(x,y+lengthdir_y(40,direction-90)))
      18. {
      19. direction-=90;
      20. }
      21. }
      Alles anzeigen


      sobald er nach oben geht, bleibt der Charakter stecken....
      es liegt daran, dass er dann rechts abbiegt und in richtung y der Weg frei ist.... wie kann ich dies beheben?

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

    • Freakkong schrieb:

      sobald er nach oben geht, bleibt der Charakter stecken....
      es liegt daran, dass er dann rechts abbiegt und in richtung y der Weg frei ist.... wie kann ich dies beheben?

      was ist Richtung y? Verstehe ich insgesamt noch nicht ganz.

      GML-Quellcode

      1. ​if (direction ==0)

      brauchen wir doch nicht mehr :)

      GML-Quellcode

      1. ​if (place_empty(x,y+lengthdir_y(40,direction-90)))

      änder mal 40 auf speed.
      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
    • passiert das nur, wenn untere Code dabei ist?

      hast du in dem direction==0 weggemacht und 40 auf speed gesetzt?
      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
    • Wenns geht, wenn du speed auf 1 setzt, brauchst du am besten ein Code der Preziser collision checkt.
      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
    • Hi

      Hier habe ich einen Linksläufer, der immer nach links abbiegt. Das habe ich aus meinen Boulder Dash Klon. Vielleicht kann das dir etwas helfen.
      Step Event:

      GML-Quellcode

      1. ///////////////////////////////////
      2. // Quadrate sind links Läufer //
      3. ///////////////////////////////////
      4. {
      5. Richt = false
      6. speed = max_speed;
      7. if ( !place_snapped(32,32) ) exit;
      8. switch (direction)
      9. {
      10. case 0: // läuft nach rechts
      11. // prüfe wohin der Linksläufer laufen kann, beginnend mit oben, dann rechts, dann unten und dann wieder nach links
      12. if (!position_meeting(x,y-32,obj_Rand))
      13. {
      14. // Über uns ist kein Objekt
      15. Richt = 90;
      16. }
      17. else if (!position_meeting(x+32,y,obj_Rand))
      18. {
      19. // rechts von uns ist kein Objekt
      20. Richt = 0;
      21. }
      22. else if (!position_meeting(x,y+32,obj_Rand))
      23. {
      24. // unter uns ist kein Objekt
      25. Richt = 270;
      26. }
      27. else if (!position_meeting(x-32,y,obj_Rand))
      28. {
      29. // links von uns ist kein Objekt
      30. Richt = 180;
      31. }
      32. else
      33. {
      34. // keine Möglichkeit
      35. speed = 0;
      36. }
      37. break;
      38. case 270: // läuft nach unten
      39. // prüfe wohin der Linksl�ufer laufen kann, beginnend mit rechts, dann unten, dann links und dann wieder nach oben
      40. if (!position_meeting(x+32,y,obj_Rand))
      41. {
      42. // rechts von uns ist kein Objekt
      43. Richt = 0;
      44. }
      45. else if (!position_meeting(x,y+32,obj_Rand))
      46. {
      47. // unter uns ist kein Objekt
      48. Richt = 270;
      49. }
      50. else if (!position_meeting(x-32,y,obj_Rand))
      51. {
      52. // links von uns ist kein Objekt
      53. Richt = 180;
      54. }
      55. else if (!position_meeting(x,y-32,obj_Rand))
      56. {
      57. // über uns ist kein Objekt
      58. Richt = 90;
      59. }
      60. else
      61. {
      62. // keine Möglichkeit
      63. speed = 0;
      64. }
      65. break;
      66. case 180: // läuft nach links
      67. // pr�fe wohin der Linksl�ufer laufen kann, beginnend mit unten, dann links, dann oben und dann wieder nach rechts
      68. if (!position_meeting(x,y+32,obj_Rand))
      69. {
      70. // unter uns ist kein Objekt
      71. Richt = 270;
      72. }
      73. else if (!position_meeting(x-32,y,obj_Rand))
      74. {
      75. // links von uns ist kein Objekt
      76. Richt = 180;
      77. }
      78. else if (!position_meeting(x,y-32,obj_Rand))
      79. {
      80. // über uns ist kein Objekt
      81. Richt = 90;
      82. }
      83. else if (!position_meeting(x+32,y,obj_Rand))
      84. {
      85. // rechts von uns ist kein Objekt
      86. Richt = 0;
      87. }
      88. else
      89. {
      90. // keine Möglichkeit
      91. speed = 0;
      92. }
      93. break;
      94. case 90: // läuft nach oben
      95. // prüfe wohin der Linksl�ufer laufen kann, beginnend mit links, dann oben, dann rechts und dann wieder nach unten
      96. if (!position_meeting(x-32,y,obj_Rand))
      97. {
      98. // links von uns ist kein Objekt
      99. Richt = 180;
      100. }
      101. else if (!position_meeting(x,y-32,obj_Rand))
      102. {
      103. // über uns ist kein Objekt
      104. Richt = 90;
      105. }
      106. else if (!position_meeting(x+32,y,obj_Rand))
      107. {
      108. // rechts von uns ist kein Objekt
      109. Richt = 0;
      110. }
      111. else if (!position_meeting(x,y+32,obj_Rand))
      112. {
      113. // unter uns ist kein Objekt
      114. Richt = 270;
      115. }
      116. else
      117. {
      118. // keine Möglichkeit
      119. speed = 0;
      120. }
      121. break;
      122. default: // kann nicht laufen
      123. {
      124. speed = 0;
      125. break;
      126. }
      127. }
      128. direction = Richt;
      129. }
      Alles anzeigen
    • also muss ich noch ein grid erstellen? ist auch egal... es kommt aufs gleiche.. wenn er abbiegt, checkt er schon wieder das x nach rechts und da er erst gerade abgebogen ist und es also rechts noch frei ist, geht der charakter zurück aber danke:)...sollte ich vielleicht einen alarm einfügen? also der Gang im Irrgarten ist 64/64 und der charakter 60/60. wenn der Charakter grösser ist, funktioniert der Code nicht mehr

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