schießen in die letzte richtung

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

  • schießen in die letzte richtung

    hi,

    wollt mal nen ballerspiel machen. so 2D. jetzt mein erstes problem. Wie mach ich das der Sprite in die richtung schießt in die er als letztes geschaut hat.
    Danke im vorraus.


    mfg fraxo
    zu viele dicke kinder und zu wenig dicke beats...
    zu viele dicke autos und titten auf mtv...
    zu viele leute glauben dicke styles kauft man wie weed...
    stiel hat man oder nicht und manche lernens nie

    Mono & Nikitaman - Digge digge
  • Ich habs immer so gemacht:

    Ich habe eine Variable Richtung erstellt.
    Dan habe ich mir aufgeschrieben zumbeispiel 1=rechts 2=links etc.
    Dan hab ich im left,up,down,right event die variable richtung jeweils auf 1 2 3 4 setzen lassen.

    Für das geschoss habe ich auch eine Variable Richtung_geschoos gemacht die im create event auf richtung_geschoss=player.richtung.
    Im step event des geschosses habe ich dan ein paar if abfragen gemach also if(richtung_geschoss==1)
    dan bewegungsaktion nach recht (wen du 1 für rechts nimmst)

    ich hoffe das kappiert jetzt jeder kan nicht so gut erklären ;)
    Alle Rechtschreibfehler sind natürlich GEWOLLT und können vom Finder behalten werden
  • dafür gibt es schon die variable direction:
    0=rechts, verlauf gegen den uhrzeigersinn (d.h. 90=oben)
    wenn du verschiedene sprites für verschiedene richtungen benutzt, kontrolliere bei direction die richtung, in die sie schaun, und gib der kugel die gleiche direction wie dem spielerobjekt. dann braucht die kugel nur noch speed (oder meinetwegen aus LSD oder hasch, wir wollen uns da nicht festlegen... :D ) und dann sollte sie immer in die zuletzt benutzte richtung laufen...
  • sorry, aber ich kapier das irgendwie nicht. bitte kann mal einer den gazen codeügen sollaufschreiben den ich einfügen sol.
    ich hoffe das das wer macht.


    mfg fraxo
    zu viele dicke kinder und zu wenig dicke beats...
    zu viele dicke autos und titten auf mtv...
    zu viele leute glauben dicke styles kauft man wie weed...
    stiel hat man oder nicht und manche lernens nie

    Mono & Nikitaman - Digge digge
  • der vollständigkeithalber fang ich mal mit der spielerfigur an, und ich gehe hier von 4 richtungen aus. (man kann es aber auf beliebig viele richtungen erweitern. bei 360° solltest du aber nen anderen weg für bewegung und draw_event benutzen...) und ich gehe davon aus, dass die 4 bilder mit den jeweiligen blickrichtungen in einem sprite sind.
    ins draw-event:

    GML-Quellcode

    1. switch(direction)
    2. {
    3. case 0: image_index=0;break; //das 0. bild im sprite sollte das mit dem blick nach rechts sein
    4. case 90: image_index=1;break; //das 1. bild im sprite sollte das mit dem blick nach oben sein
    5. case 180: image_index=1;break; //das 2. bild im sprite sollte das mit dem blick nach links sein
    6. case 270: image_index=1;break; //das 3. bild im sprite sollte das mit dem blick nach unten sein
    7. }
    für bewegungsanimationen wird der code etwas komplizierter, und ich will mich kurz fassen, da ich ohnehin immer ausschweife...
    in das press-right-arrow-event (oder wie's auch heißen mag):

    GML-Quellcode

    1. direction=0;
    2. speed=4;
    das dann für hoch runter und links genauso, nur dass du direction dann durch 90, 180 und 270 ersetzt.
    ins end-step-event:

    GML-Quellcode

    1. if(!keyboard_check(vk_left)&&!keyboard_check(vk_right)&&!keyboard_check(vk_down)&&!keyboard_check(vk_up))
    2. {
    3. speed=0;
    4. }

    in das press-event für die taste, mit der du schießen willst, packst du via drag and drop (weil ich zu faul bin, die funktion dafür zu suchen) eine aktion, die das kugelobjekt am punkt (0;0) relativ zum spielerobjekt erstellt.
    in das create-event der kugel packst du das hier:

    GML-Quellcode

    1. direction=/*name des spielerobjekts*/.direction;
    2. speed=8;


    wenn der spieler durch die kugel verwundet werden kann, weil spieler und gegner die selben objekte schießen, machst du dort, wieder durch drag and drop weil ich den code grad nich zur hand hab, ein alarmevent, welches etwa 1 sekunde dauert (d.h. du packst durt so viele steps rein, wie der raum pro sekunde benutzt), welches dann irgend eine variable auf true setzt (die im createevent noch auf false gesetzt werden sollte), und in der kollision prüfst du zuerst

    GML-Quellcode

    1. if(/*variable*/==true)
    2. {
    3. /*der code, den du da schon hattest*/
    4. }


    so, dis war jetzt doch etwas umfangreicher...
    übrigens solltest du noch durch variiren der speeds von kugel und spieler, sowie einer anderen zeit für das eventuelle alarmevent, das ganze noch besser an dein spiel anpassen. das alarmevent ist nur, damit der spieler sich nich selbst abschießt, falls er und gegner die selben kugeln benutzen...

    ...und wehe, wenn jetzt jemand schneller war als ich...
  • Benutzer online 1

    1 Besucher