Auf Gegner springen

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

  • Auf Gegner springen

    hi!
    bräuchte mal wieder hilfe bei meinem jump and run spiel.
    ich krieg das irgendwie nicht richtig hin. also, da sind so verschiedene tiere in dem spiel und wenn man einfach gegen sie läuft, soll man sterben (das habe ich schon hinbekommen). allerdings soll man sie ja auch irgendwie besiegen können, also draufspringen, und dann soll es einen sound abspielen, dann soll das sprite von dem toten tier da sein und schließelich soll es verschwinden.
    das anderen krieg ich so hin, aber das mit dem draufspringen bekomme ich nicht hin. also der charakter stirbt ja bei der berührung des tieres. aber wie bekommt man das hin das man das tier mit draufspringen besiegen kann? habt ihr da eine idee was ich da genau machen muss? vielleicht auch einen einfachen code den ich dann nur noch einfügen brauch.
  • Also, wie das mit dem Kopfspringen geht weiß ich grad nich (müsste ich jez kurz nachkucken), aber das andre kann ich dir schnell erklären:

    Sound abspielen:

    GML-Quellcode

    1. sound_play(sound)


    Dann...für das sterben;

    mach ein zweites objekt, dort den sprite vom toten tier hin.

    Dan dort wo der Kopf zerbröselt wird;

    GML-Quellcode

    1. instance_change(objekt_tot,false);
  • Das mit dem Draufspringen lässt sich auf veschiedene Arten lösen. Zum Beispiel kannst du prüfen, ob der Player höher ist als der Gegner (player.y < gegner.y) oder ob der Player gerade fällt (vspeed>0).
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • hi
    erstmal danke für eure antworten. der code von black spark hört sich ja schon ganz gut an. nur ich bin ja noch nicht so erfahren in sachen codes, und wollte fragen ob du den code nochmal so posten könntest, das ich ihn nur noch einfügen muss. also sonst ist alles ok. mein charakter heißt Rolf und der Gegner Glucke01.
    weil ich weis nämlich nicht wo ich was genau einsetzen muss.
    vielen dank schonmal
  • so lernt man aber nix^^
    du machs ein kollisions event von "Rolf" vollgenden code:

    GML-Quellcode

    1. if (y <= other.y-sprite_get_height(other.sprite_index)){
    2. with other instance_destroy();
    3. sound_play(abc); //"abc" muss dan der sound sein zum sterben des gegners
    4. } else {
    5. instance_destroy();
    6. sound_play(def); // "def" ist der sound wen rolf stirbt
    7. }
    ps: alles was grün ist, wird nicht gebraucht, das dient nur zur erklärung.
    :) Nobody is perfect (-:

    "Dummköpfe sind Denkerköpfen weit überlegen. Zahlenmäßig." Ernst Ferstl
  • Wenn du die SPielfigur an den Anfang setzen willst...

    GML-Quellcode

    1. if (y <= other.y-sprite_get_height(other.sprite_index))
    2. {
    3. with other instance_destroy();
    4. sound_play(abc); //"abc" muss dan der sound sein zum sterben des gegners
    5. } else {
    6. x=xstart;
    7. y=ystart;
    8. sound_play(def); // "def" ist der sound wen rolf stirbt
    9. }


    ;)

    EDIT: Code weg. :D

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

  • Ja, du irrst grad.^^ Rolf ist die Spielfigur und muss höher sein als der Gegner (y<other) um ihn zu plätten. Der Codeschnipsel von nobody stimmt schon.
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • hi
    das klappt irgendwie nicht. ich habe diesen code genauso eingefügt:

    GML-Quellcode

    1. if (y <= other.y-sprite_get_height(other.sprite_index)){
    2. with other instance_destroy();
    3. sound_play(Glucke);
    4. } else {
    5. instance_destroy();
    6. sound_play(Rolf_stirbt);
    7. }


    aber jetzt stirbt das vieh bei jeder berührung mit rolf, egal ob vonner seite oder von oben. es soll ja nur sterben wenn man draufspringt.
    außerdem wollt ich mal wissen, wo ich das kollisionsevent hinmachen soll. bei rolf oder bei dem tier? oder ist das egal?
  • ohh, ich seh grad, ich hab mich grad vertan, es muss heißen:

    GML-Quellcode

    1. if (y <= other.y-sprite_get_height(sprite_index)) {
    2. with other instance_destroy();
    3. sound_play(Glucke);
    4. } else {
    5. instance_destroy();
    6. sound_play(Rolf_stirbt);
    7. }


    Dabei ist zu beachten, dass sowohl beim spieler als auch bei dem gegner sprite die kollision das komplette sprite sein muss. d.h. "Precise collision checking" ausschalten und "Bounding Box" auf "Full image" setzen.
    Außerdem muss "Origin" bei beiden sprites auf 0,0 gesetzt sein.
  • Ja hab ich mir auch gedacht. Wenn du das Origin zentrierst, solltest du es so machen:

    GML-Quellcode

    1. if (y <= other.y-sprite_get_height(sprite_index)/2)

    Aber trotzdem sollte das an sich funzen. Ich denke, es liegt nur am Origin.
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • Dabei ist zu beachten, dass sowohl beim spieler als auch bei dem gegner sprite die kollision das komplette sprite sein muss. d.h. "Precise collision checking" ausschalten und "Bounding Box" auf "Full image" setzen.
    Außerdem muss "Origin" bei beiden sprites auf 0,0 gesetzt sein.


    ich versteh das nicht^^ also bin ja eigentlich noch sehr am anfang von gamemaker, ich weis gar nicht was das alles bedeutet.

    aufjedenfall hab ich nochmal deinen richtigen code eingefügt, es funzt abver immernoch nicht. das tier verschwidet bei jeder berührung mit dem charakter.
  • hmm ja dann guckt es euch mal an
    aber nich lachen ;)
    ok also noch ein paar sachen, die ihr wissen solltet: ich hab noch keinen sound, wenn der charakter stirbt, deswegen hab ich zum testen erstmal den sound von der glucke genommen. und dann hab ich das damals mit der steuerung auch nicht so gut hinbekommen. ihr werdet es vielleicht merken.
    und nicht wundern warum im level noch nicht so viel ist. das mache ich erst später wenn alles funzt, dann mache ich das level fertig.

    also viel glück^^
    das spiel gibts hier: loeperz.de/rolf4.gm6
  • Bei mir läufts.
    Die Henne an sich ist schon von der Höhenbestimmung her problematisch, da der Kopf ja höher als der Körper ist. Mit dem Sprite Editor konnte ich ausmachen, dass der tiefste Punkt im Rücken der Henne bei 26 liegt. Also müssen wir zu der Formel 26 dazuzählen. Um nun sicherzugehen, das der Held wirklich von oben runterkommt und nicht durch den Kopf der Henne springt, bietet sich an, die vertikale Geschwindigkeit des Rolf einem Vorzeichentest zu unterziehen und die Henne nur bei positivem Vorzeichen zu zerstören.
    Das bringt im Endeffekt die Funktion, die du haben möchtest, und sieht so aus:

    GML-Quellcode

    1. if (y <= other.y-sprite_get_height(sprite_index)+26 && sign(vspeed)=1){
    2. with other instance_destroy();
    3. sound_play(Glucke);
    4. } else {
    5. instance_destroy();
    6. sound_play(Glucke);
    7. }
    "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
    - Joseph Weizenbaum
  • Benutzer online 8

    8 Besucher