Spieler soll mit Messer stechen

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

  • Spieler soll mit Messer stechen

    Hallo

    ich habe ein object namens spieler und eins namens messer.

    Der Spieler soll das Messer in der Hand halten und bei Tastendruck mit Space soll das Messer einige Pixel nach vorne gehen und nach einer gewissen Zeit wieder in die Startposition.

    So wollte ich es lösen:

    Im object Spieler:

    Create-Event:

    create instance messer x/y relativ zum object spieler

    im press-space-event (damit nur einmal alle 0,2 Steps zugestochen werden kann):

    jump to a given position, applies to messer, relativ x+20/y(spieler)
    set alarm[0] to 2

    im alarm [0]-event:

    jump to a given position, applies to messer, relativ x -20/y(spieler)

    Es funktioniert ja auch, daß das object messer 20 pixel vor und zurückgeht, so als wenn man zusticht, aber es geht nicht mit dem Spieler mit. Es bleibt an der zuerst erstellten Position.

    Wie kann ich das Messer mit dem Spieler mitführen lassen, so daß es aussieht er hätte es in der Hand?
    Was man mit Händen baut, kann auch mit Händen zerstört werden...
  • Ganz einfach:
    Gib dem Spielersprite das Messer in die Hand.
    Das Sprite zu zustechen hat dann halt keins in der Hand, weil dafür ja das Messer-Object da ist.
    Hier werden sie geholfen:
    [Regeln] [GML] [Hilfe] [Suche] [Posten] [Duden.de]
    [Wenn das alles nicht mehr hilft] [Dunning-Kruger]


    "Die Vernunft sollte Autorität definieren; nicht umgekehrt!"
    "Selber denken regt das Gehirn an."
    - Niffel f.k.a. Kilik
  • :D Die Lösung hatte ich auch schon.

    Ich dachte es geht einfacher.... naja er soll halt das Messer schon in der Hand lassen.

    Gut dann müßen halt 2 Sprites gezeichnet werden mit unterschiedlichem Messerabstand zum Spielerkörper...
    Was man mit Händen baut, kann auch mit Händen zerstört werden...
  • wenn du diesen code im step event des messers einfügst:
    if alarm[0]=0
    {
    x=spieler.x-20
    y=spieler.y
    }
    folgt es dem spieler auf schritt und tritt. allerdings dürfte es immer einen frame hinterherhinken. das liegt einfach daran, das der GM stepbsiert arbeitet und so eine sache nach der anderen abgefragt wird.
    eine weitere möglichkeit wäre, das messer im draw event des spielers anzeigen zu lassen:
    draw_sprite(x,y,spieler,-1);
    draw_sprite(x-20+alarm[0],y,messer,-1);
    oder sowas. alarm[0] stellt dabei die bewegung des messers...
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • Original von WIN
    wenn du diesen code im step event des messers einfügst:
    if alarm[0]=0
    {
    x=spieler.x-20
    y=spieler.y
    }
    folgt es dem spieler auf schritt und tritt. allerdings dürfte es immer einen frame hinterherhinken. das liegt einfach daran, das der GM stepbsiert arbeitet und so eine sache nach der anderen abgefragt wird.
    eine weitere möglichkeit wäre, das messer im draw event des spielers anzeigen zu lassen:
    draw_sprite(x,y,spieler,-1);
    draw_sprite(x-20+alarm[0],y,messer,-1);
    oder sowas. alarm[0] stellt dabei die bewegung des messers...


    Ja das klingt logisch und einfach. Kann ich es nicht einfach realisieren indem ich das Messer relative zum spieler mache und dem messer halt bei x und y sage spieler.hspeed und spieler.vspeed???
    Was man mit Händen baut, kann auch mit Händen zerstört werden...
  • wenn du bei x und y den speed des splayers angibts, wird das messer oben links in der ecke angezeigt werden, das der speed des players ja meistens eine zahl zwischen 1 und 10 beträgt.
    das ist natürlich auch möglich aber du muss z.b. einen solchen code verwenden:
    vspeed=spieler.vspeed;
    hspeed=spieler.hspeed;
    es gibt manigfaltige möglichkeiten das messer an die entsprechende stelle zu bewegen. es ist vor allem fraglich, wie das messer im spiel agieren soll.
    hier ein kleines beispiel, wie ich mir das gedacht habe:
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • Original von WIN
    wenn du bei x und y den speed des splayers angibts, wird das messer oben links in der ecke angezeigt werden, das der speed des players ja meistens eine zahl zwischen 1 und 10 beträgt.
    das ist natürlich auch möglich aber du muss z.b. einen solchen code verwenden:
    vspeed=spieler.vspeed;
    hspeed=spieler.hspeed;
    es gibt manigfaltige möglichkeiten das messer an die entsprechende stelle zu bewegen. es ist vor allem fraglich, wie das messer im spiel agieren soll.
    hier ein kleines beispiel, wie ich mir das gedacht habe:


    Das ist einfach genial! Ok und nun gibt es nur noch ein kleines Problem!

    Du hast die Figur nur nach rechts blicken lassen. Ich habe eine Figur die kann auch nach links blicken. Klar da habe ich eine Abfrage gemacht, in welche Richtung die Figur schaut. Ach ups! habe nochmal reingeschaut und die Lösung gefunden. Ich brauche noch ein Code unter press-space und ne if-abfrage in welcher richtung der player gerade schaut.

    Vielen Dank WIN!

    Noch eine andere Frage:

    Wie kann ich das in GML coden, das der Room dem aktuellen Spielerobjekt folgt??
    Was man mit Händen baut, kann auch mit Händen zerstört werden...

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

  • das der raum dem spieler folgt? das ist nicht möglich, da der raum eine feste grösse besitzt. du meinst warscheinlich, das eine view dem spieler folgt. das geht z.b. so:
    im createevent des players (oder was auch immer)

    view_object[0]=obj_player;
    view_hborder[0]=(view_hview[0]/2)-50;
    view_vborder[0]=(view_wview[0]/2)-50;
    view_visible[0]=true;
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • Original von WIN
    das der raum dem spieler folgt? das ist nicht möglich, da der raum eine feste grösse besitzt. du meinst warscheinlich, das eine view dem spieler folgt. das geht z.b. so:
    im createevent des players (oder was auch immer)

    view_object[0]=obj_player;
    view_hborder[0]=(view_hview[0]/2)-50;
    view_vborder[0]=(view_wview[0]/2)-50;
    view_visible[0]=true;


    Klappt nicht. Kommt eine Fehlermeldung "unknow variable view_hview".

    Code soll für den GM 5 sein.
    Was man mit Händen baut, kann auch mit Händen zerstört werden...

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

  • ok das hätte ich vorher wissen müssen. der code muss dann so geändert werden:

    view_object[0]=obj_player;
    view_hborder[0]=(view_height[0]/2)-50;
    view_vborder[0]=(view_width[0]/2)-50;
    view_visible[0]=true;

    kann sein das das auch nicht klappt, hab ein bischen was gebechert...
    werde mir morgen nochmal meine verbrechen hier ansehen.
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • Original von WIN
    ok das hätte ich vorher wissen müssen. der code muss dann so geändert werden:

    view_object[0]=obj_player;
    view_hborder[0]=(view_height[0]/2)-50;
    view_vborder[0]=(view_width[0]/2)-50;
    view_visible[0]=true;

    kann sein das das auch nicht klappt, hab ein bischen was gebechert...
    werde mir morgen nochmal meine verbrechen hier ansehen.


    Hoffe du hast heute keine Kopfschmerzen :D

    Leider funktioniert dieser Code auch nicht. Damit teilt er mit den horizontalen View zur Hälfte...

    Ich habe folgenden Code genommen, der funktioniert:

    GML-Quellcode

    1. view_object[0]=figur;
    2. view_hborder[0]=(view_height[0]/2)+50;
    3. view_vborder[0]=(view_width[0]/4)+0;
    4. view_visible[0]=true;


    Aber nur mit spielfigur 1 nicht mit der zweiten figur.... natürlich habe ich figur durch die 2.figur erstetzt...
    Was man mit Händen baut, kann auch mit Händen zerstört werden...

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

  • Original von - Kev -
    willst du, dass nur eine Figur vom view verfolgt wird?
    Dann richte doch das View im Room ein aber stelle keine Objekt ein, dass es folgen soll. Und dann mach bei allen Objekten im Create Event nur den Code "view_objekt[0]=objektname"


    Ich will das view nur eine Figur verfolgt. Ein View ist eingestellt. Auch die Änderung im Create-Event habe ich schon vorgenommen.

    Sobald aber mein object spieler in mein object spieler2 wechselt, verfolgt der view spieler2 nicht mehr. Erst wenn ich wieder in spieler wechsele, gehts...

    Habe schon alles ausprobiert, aber mit Sicherheit habe ich eine Sache übersehen, oder der Code funktioniert wirklich nur mit einem object.

    Auch in den Roomeinstellung habe ich das object following auf "no object" gestellt.

    Es soll halt immer die aktuelle Spielfigur vom View verfolgt werden.
    Was man mit Händen baut, kann auch mit Händen zerstört werden...
  • wiso wechselt die spielfigur den überhaupt? es reicht, wenn du das spite änderst. eine playerfigur aus mehr als einem teil zu machen (ausgenommen extras wie waffen etc.) ist meistens nicht grade günstig.
    der code (der zumindest teilwiese richtig war) soll eigendlich das einrichten einer view in jedem neuen raum überflüssig machen:

    // Definiert das object, dem die view folgen soll
    view_object[0]=figur;

    // Definiert den horizontalen rand, bei
    // dessen berührung die view bewegt wird
    view_hborder[0]=(view_height[0]/2)+50;

    // Definiert den vertikalen rand, bei
    // dessen berührung die view bewegt wird
    view_vborder[0]=(view_width[0]/4);

    // Schaltet die view ein
    view_visible[0]=true;
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x

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

  • Original von WIN
    wiso wechselt die spielfigur den überhaupt? es reicht, wenn du das spite änderst. eine playerfigur aus mehr als einem teil zu machen (ausgenommen extras wie waffen etc.) ist meistens nicht grade günstig.
    der code (der zumindest teilwiese richtig war) soll eigendlich das einrichten einer view in jedem neuen raum überflüssig machen:

    // Definiert das object, dem die view folgen soll
    view_object[0]=figur;

    // Definiert den horizontalen rand, bei
    // dessen berührung die view bewegt wird
    view_hborder[0]=(view_height[0]/2)+50;

    // Definiert den vertikalen rand, bei
    // dessen berührung die view bewegt wird
    view_vborder[0]=(view_width[0]/4);

    // Schaltet die view ein
    view_visible[0]=true;


    Ja den Code verstehe ich, aber es ist unumgänglich das ich player1 in player2 wechsele (Es geht um Waffeneinsatz und ist nicht möglich mit einem object_waffe1 und object_waffe2, weil player2 ein anderes Verhaltensmuster aufweist, wie player1.)

    Daher muß ich wenn die Figur im gleichen Raum wechselt, unbedingt object following für beide objecte einrichten.
    Was man mit Händen baut, kann auch mit Händen zerstört werden...
  • für beide objecte geht es nicht. eine view kann immer nur einem object folgen. du kannst aber beim wechsel auf "spieler2" der view mitteilen, diesem object du folgen. einfach direkt nach dem wechsel (das object muss im raum vorhanden sein) view_object[0]=spieler2; eingeben.
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • Original von WIN
    für beide objecte geht es nicht. eine view kann immer nur einem object folgen. du kannst aber beim wechsel auf "spieler2" der view mitteilen, diesem object du folgen. einfach direkt nach dem wechsel (das object muss im raum vorhanden sein) view_object[0]=spieler2; eingeben.


    Es ist ja auch immer nur ein object player im view da! niemals zwei gleichzeitig!

    Also wie ich dich verstehe muß ich irgendwo ein weiteres object erstellen, welches den view-code beinhaltet?

    Hier ist die GM5 Datei. Vielleicht kannst du sie dir ja mal anschauen:

    Gm5-View
    Was man mit Händen baut, kann auch mit Händen zerstört werden...

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

  • es ist zwar etwas unforteilhsft gemacht, aber nun müsste es so funktionieren, wie du dir das gedacht hast:
    klickmichichbineinlink
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • Original von WIN
    es ist zwar etwas unforteilhsft gemacht, aber nun müsste es so funktionieren, wie du dir das gedacht hast:
    klickmichichbineinlink


    Danke WIN!

    Wäre ich nie drauf gekommen!
    Was man mit Händen baut, kann auch mit Händen zerstört werden...

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