Move_to_contact

  • Move_to_contact

    hallo!

    irgendwie funktioniert die funktion move_to_contact überhaupst nicht....
    ich lad euch die gm6 datei einfach hoch damit ihr es euch selbst ansehen könnt.

    Der rote block den man spielt berührt nicht ganz den boden wenn man von weiter oben herunterspringt sondern er stoppt ein paar pixel vorher.
    Außerdem wäre es nett wenn ihr euch die zwei codes im step event mal ansehen könnt, weil ich glaub da hab ich nen fehler drin.

    mfg
    Dateien
  • Ersetz' mal im Step Event vom Spieler bei allen Move to contact - Actions das -1, was im Maximum - Feld steht durch 'vspeed'. ;)

    Und achte bitte auf die Namen deiner Resourcen.

    Quellcode

    1. Sprite name "Farbtopf_rot" is equal to an object name.
    2. Sprite name "Kugel_3" is used twice.
    3. Sprite name "Kugel_4" is used twice.
    4. Sprite name "Totenkopf_gruen" is equal to an object name.
    5. Sprite name "jump_gruen" is equal to an object name.
    6. Sprite name "Totenkopf_rot" is equal to an object name.
    7. Sprite name "Totenkopf_blau" is equal to an object name.
    8. Sprite name "Totenkopf_gelb" is equal to an object name.
    9. Object name "Farbtopf_rot" is equal to a sprite name.
    10. Object name "Totenkopf_gruen" is equal to a sprite name.
    11. Object name "jump_gruen" is equal to a sprite name.
    12. Object name "Totenkopf_rot" is equal to a sprite name.
    13. Object name "Totenkopf_gelb" is equal to a sprite name.
    14. Object name "Totenkopf_blau" is equal to a sprite name.
    Alles anzeigen


    MfG,
    -fabse64 :)
  • danke

    EDIT:

    sry wenn ich nochmal nerve,aber ich hab noch ein problem:

    im step event soll gefragt werden:

    ob ein object: totenkopf_rot sich an der position x+1 oder x-1 oder y+1 oder y-1 relativ zum spieler befindet.

    wenn ja soll er fragen ob die var.farbe 2 ist.
    Ist die variable farbe 2, so soll die variable tot den wert 1 annehmen.


    und der 2te code:

    if (tot == 1) && (farbe == 1) sprite_index = kugel1tot;
    if (tot == 1) && (farbe == 2) sprite_index = kugel2tot;
    if (tot == 1) && (farbe == 3) sprite_index = kugel3tot;
    if (tot == 1) && (farbe == 4) sprite_index = kugel4tot;
    if (tot == 1) {tot = 0};

    aber irgendwie funktionier der nicht, hab ich da nen fehler drin?

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

  • domi schrieb:

    sry wenn ich nochmal nerve,aber ich hab noch ein problem:

    im step event soll gefragt werden:

    ob ein object: totenkopf_rot sich an der position x+1 oder x-1 oder y+1 oder y-1 relativ zum spieler befindet.

    wenn ja soll er fragen ob die var.farbe 2 ist.
    Ist die variable farbe 2, so soll die variable tot den wert 1 annehmen.
    Müsste so gehen:

    GML-Quellcode

    1. if ((totenkopf_rot.x=playerobject.x+1) or (totenkopf_rot.x=playerobject.x-1) or (totenkopf_rot.y=playerobject.y+1) or (totenkopf_rot.y=playerobject.y-1))
    2. {
    3. //ob ein object: totenkopf_rot sich an der position x+1 oder x-1 oder y+1 oder y-1 relativ zum spieler befindet.
    4. if farbe=2
    5. {
    6. //wenn ja soll er fragen ob die var.farbe 2 ist.
    7. tot=1
    8. //Ist die variable farbe 2, so soll die variable tot den wert 1 annehmen.
    9. }
    10. }


    Ich würde aber die +1 und -1 verändern, da ich glaube dass dein Object nicht 1*1 px groß ist..


    LG
    -Tobi
  • jetzt seh ich grad , dass das mit dem move to contact doch noch nicht richtig funktioniert...ich hab zwar statt -1 vspeed eingetragen aber es hilft trotzdem nichts...:(

    könntet ihr euch das ganze mal im game selber anschauen das ich im ersten post angehängt habe anschaun?
  • Das Problem ist denke ich folgendes:
    Du prüfst ja, ob an Position y+vspeed eine Kollision stattfindet. Also z.B. y+12, d.H. wenn 12 Pixel unter dem Block eine Plattform ist wird die vspeed direkt invertiert etc. .Du solltest mal versuchen das vspeed invertieren ins Collision event zutun, bzw., generell ein Collision event zu verwenden. Leider kenne ich mich in diesem Bereich nicht so gut aus, aber ich denke da müsste noch ein Step Pause sein damit der Block überhaupt an dieser Position gedrawed wird, zu der Move to Contact ausgeführt wird. Weil im nächsten Step wird ja schon die "neue" vspeed ausgeführt, also wieder nach oben gegangen.
  • das komische ist, bei gewissen höhen funktioniert es das er ganz am boden ankommt, bei manchen höhen nicht.
    höhen= wie weit der spieler runterfällt^^

    EDIT:
    geschaft! :D
    es war so wie du es gesagt hast: das object wurde nicht mehr gedrawt weil es es im selben step schon wieder eine negative vspeed hatte.
    Ich habs so gelöst, das einfach wenn sich da object (y=vspeed) über dem boden befindet, dass die variable jump=vspeed wird, und if jump ist größer 0 dann vspeed= -jump
    somit wird das erst im nächsten step ausgeführt und alles ist friede,freude,eierkuchen :thumbsup:

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

  • Benutzer online 1

    1 Besucher