den bug check ich net

  • GM 8
  • den bug check ich net

    hi,

    ich habe kästchen die 32x32 groß sind. mein player darf nicht diagonal laufen. doch bei meinem code, (ein feld laufbar) geht er auch diagonal nach oben rechts wenn man auf das feld klickt. aber der selbe bug ist nicht vorhanden, wenn man nach unten links drückt :S... warum??? der code is einfach nur umgedreht.
    warum findet der bug nur nach oben rechts statt und nicht auch nach unten rechts, oder unten links etc....

    geschrieben hab ich

    GML-Quellcode

    1. if(mouse_y-y<48&&mouse_y-y>16)and(mouse_x-x>-16||mouse_x<16){//1 schritte nach oben
    2. y+=32;
    3. moves=0;
    4. }
    5. if(mouse_y-y<-16&&mouse_y-y>-48)and(mouse_x-x>-16||mouse_x<16){//1 schritt nach unten
    6. y-=32;
    7. moves=0;
    8. }
    9. if(mouse_x-x<48&&mouse_x-x>16)and(mouse_y-y>-16||mouse_y<16){// 1 schritt nach rechts
    10. x+=32;
    11. moves=0;
    12. }
    13. if(mouse_x-x<-16&&mouse_y-y>-48)and(mouse_y-y>-16||mouse_y<16){
    14. x-=32;
    15. moves=0;
    16. }
    Alles anzeigen



    gruß gruen


  • hi,
    also das einzige was mir auffällt, aber wo ich mir nicht wirklich sicher
    bin ob der fehler daran liegt, ist, dass du überall bei
    if(mouse_y-y<48&&mouse_y-y>16)and(mouse_x-x>-16||mouse_x<16)
    die x-koordinate nicht mehr vom mouse_x abgezogen hast.
    vielleicht hilft es dir ja, oft siehr man ja selbst den wald vor lauter bäumen nicht ;)

    edit: außerdem müsste glaube ich mouse_x-x>-16 und mouse_x(-x)<16 auch mit einem && getrennt sein
    mfg
    HIM
  • Erstmal solltest du genau erklären, wie das funktionieren soll, vielleicht kann ja der Code stark vereinfacht werden. Dein spieler steht also an der Position 32|32 ( seine "Mitte") und wenn du mit der Maus über ihn fährst, soll er sich 32 Pixel nach oben"teleportieren"( warum machst du keine weiche Bewegung) ?!?!
  • ich kann nur mutmaßen, aber ich gehe davon aus, dass der code beim klicken ausgeführt wird, sonst würde es, in meinen augen,
    keinen/wenig sinn machen..
    an dem "sprunghafen" bewegungen liegt es aber mit sicherheit nicht.
    nun ja, nicht jeder braucht für ein projekt weiche bewegungen ;)
  • oh ich dachte der tread wär tod, sonst hätt ich schon lange reingeschrieben das ichs gelöst hab :S...

    das ding ist nämlich das ich dummer weise...

    if(mouse_x-x<-16&&mouse_y-y>-48)and(mouse_y-y>-16||mouse_y<16){

    geschrieben habe, aber es eigendlich

    if(mouse_x-x<-16&&mouse_y-y>-48)and(mouse_y-y>-16&&mouse_y<16){

    hätte heißen müssen...

    trotzdem danke für die ganzen antworten...

    gruß gruen