Player(4 Richtung) schießen. Mit Maus.

  • GM 8
  • Player(4 Richtung) schießen. Mit Maus.

    Hallo ;)

    Ich komm dann schnell zu mein Problem(2D Spiel):
    Ich hab jetzt einen "obj_player", und Steuerung mit "W+A+S+D" erstellt worden. Ich habe 4 Sprites, die in Richtung schauen, also wenn ich "W" drücke kuckt er nach oben mein Player, und S...nach unten..undsoweiter.

    Jetzt will ich aber das der Player, wenn ich "W" drücke, dann auf die Maus drücke im Display, egal wo ich hin drücke, soll der "obj_bullet" in die richtung von "W" also nach oben gehen undzwar gerade.


    Sprich(ergänzung nochmal, die es nicht verstanden haben) Wenn ich mit der Maus irgendwo Drücke " und der Player im stand von "A" ist, soll der obj_bullet in die richtung schießen, wo der Player vorne ist(also im diesen fall Jump to Position x-6).
  • definiere eine Variable (z.B. dir = 0; // 0 rechts, 1 oben, 2 links, 3 unten)

    falls du eine if abfrage der tasten benutzt dann in die Schleife bei

    D > dir = 0;
    W > dir = 1;
    A > dir = 2;
    S > dir = 3;

    einfügen.

    Beim erstellen des objekts obj_bullet:

    var i;
    {
    i = instance_create(x,y,obj_bullet)
    i.direction = dir*90
    i.speed = xxxx
    }
  • Geht nicht ganz. Also ich hab zurzeit folgendes.

    Im obj_player

    Keyboard A = Actions: Mouse to position (x-4/y0) / change sprite (spr_player 3 - speed = 0 )
    Keyboard D = Actions: Mouse to position (x4/y0) / change sprite (spr_player 2 - speed = 0 )
    Keyboard S = Actions: Mouse to position (y4/x0) / change sprite (spr_player 0 - speed = 0 )
    Keyboard W = Actions: Mouse to position (y-4/x0) / change sprite (spr_player 1 - speed 0 )

    Außerdam habe ich im (spr_player) 4 Sprites, rechts, unten, links, oben.

    Und dennoch habe ich im obj_bullet erstmal garnichts :D außer das Sprite,
    Kannst du mir jetzt somit helfen? Ich danke dir Fin, das du antwortest :thumbsup:
  • DANKESCHÖN FIN!
    Bist du wirklich ein Drag-drop einsteiger, oder ich? :D

    -----------
    Eine frage noch, wie kann ich das

    case(ord("D")): {image_single = 0; x+=5;break;}
    case(ord("W")): {image_single = 1; y-=5;break;}
    case(ord("A")): {image_single = 2; x-=5;break;}
    case(ord("S")): {image_single = 3; y+=5;break;}

    ändern zu " wenn man S drückt, dann das der Player laufen soll( also wie button nicht PRESSED.. )

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

  • kaano123 schrieb:

    DANKESCHÖN FIN!
    Bist du wirklich ein Drag-drop einsteiger, oder ich? :D

    -----------
    Eine frage noch, wie kann ich das

    case(ord("D")): {image_single = 0; x+=5;break;}
    case(ord("W")): {image_single = 1; y-=5;break;}
    case(ord("A")): {image_single = 2; x-=5;break;}
    case(ord("S")): {image_single = 3; y+=5;break;}

    ändern zu " wenn man S drückt, dann das der Player laufen soll( also wie button nicht PRESSED.. )
    Meinst du dass nach dem Betätigen der S- Taste die Bewegung nach unten erhalten bleibt?
  • Also zurzeit ist dieses Script ja so, dass man immer die Taste drücken soll, das die immer laufen..
    Ich will aber, wenn ich die "S" taste gedrückt halte, dann der Player läuft und bis ich die "S" taste nicht mehr gedrückt halte, soll dann auch der Player stehen.

    ist genauso wie " left Button ". Zurzeit ist es halt wie " left Pressed "
  • kaano123 schrieb:

    Also zurzeit ist dieses Script ja so, dass man immer die Taste drücken soll, das die immer laufen..
    Ich will aber, wenn ich die "S" taste gedrückt halte, dann der Player läuft und bis ich die "S" taste nicht mehr gedrückt halte, soll dann auch der Player stehen.

    ist genauso wie " left Button ". Zurzeit ist es halt wie " left Pressed "
    Soweit du das nicht konkretisierst und auch in klarer Art und Weise ausdrückst kann ich dir wohl nicht helfen. Der Code führt genau das aus was du gerade geschildert hast.

    Sobald die Taste gedrückt gehalten wird läuft der obj_player dementsprechend in die aufgeführte Richtung.

    Der Code ist im Prinzip nichts anderes als:


    if(keyboard_check(ord("D"))){image_single = 0; x+=5}
    if(keyboard_check(ord("W"))){image_single = 1; y-=5}
    if(keyboard_check(ord("A"))){image_single = 2; x-=5}
    if(keyboard_check(ord("S"))){image_single = 3; y+=5}


    nur von der Maschine aus gesehen einen Tick schneller in der Verarbeitung.
  • Benutzer online 1

    1 Besucher