Verwandlung von kleinem Objekt zu Großem

  • GM 7

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

  • Verwandlung von kleinem Objekt zu Großem

    Hallo!

    Ich hab ein kleines Problem... :huh:

    Meine Frage:
    In meinem Spiel hab ich einen Charakter, der sich auf Tastendruck verkleinern wieder vergrößern kann. Dazu hab ich 2 Objekte erstellt (einmal groß, einmal klein).
    Wenn der Spieler jetzt auf "1" drückt, wird die Spielfigur in das kleine Objekt verwandelt (ausgetauscht). Beim umgekehrten Weg hab ich das Problem, das das große Objekt im Boden erscheint oder - wenn ich direkt bei einer Wand stehe - in der Wand drinnen.

    Was kann ich dagegen tun? Wie kann ich das einstellen, das das Objekt nur verwandelt wird, wenn es überhaupt Platz hat?

    Danke für jede Hilfe, sry falls es das Thema schon gab, Rechtschreibfehler sind absichtlich eingebaut ;)
  • es gibt mehrere variaten.
    ich werde jetzt einfach mal nur ideen geben, wenn du probleme mit der umsetzung hast frag nochmal dann kann ich dir auch ein bischne code dazufließen lassen.
    Also :
    1. du überprüfst, wo sich der spieler befindet, ob eine wand daneben ist usw..
    Wenn keine wand o.ä. da sind, vergrößert sich der spieler wie gehabt. wenn eine wand o.ä,. im weg ist kommt einafach ein kleiner hinweis in form einer sprechbalse am character ode rso dass er sich ncht verwandeln kann.
    2. du überprüfst ob eine wand oder ähnliches im weg ist. wenn nicht dann vergrößert sich der spieler ganz normal. wenn doch, schiebst du den spieler in die richtung in der frei ist. wenn nirgends frei ist, also rechts und links vom spieler wände sind erscheint wieder eine sprechblase oder so.
    Bei allen gilt aber, beim wechseln vom großen zum kleinen character den y wert verringern. wenn du das orgin der beiden sprites (groß/klein) jeweils in der mitte hast, dann um (sprite höhe(groß)-sprite höhe(klein)=differenz)
    aber am besten +1 zum sichergehen. hoffe das war einigermaßen verständlich. wenn es zu zusammenhangslos und wirr für dich war werd ich mich nashc weihnahcten nochmal dran setzen. weil morgen(eigentlich ja heute) ist weihnachten und da werd ich garantiert nicht den tag am pc verbringen. schönen feiertag noch
    mfg gamer_08
    edit: sehe grade dass du ja shcon bei dem code hängst.. hier mal ein beispiel code:

    GML-Quellcode

    1. if (position_empty(x+15)) {     //mach spieler größer.}

    und dann einfach bei position_empty(x+15) die 15 durch deinen wert tauschen.
    also wenn es um die wand rechts geht +15 oder so und wennes um links geht -15 . musst halt mal mit den werten rumspielen und schaun was paasst.
    und wegen dem boden feststecken einfach:

    GML-Quellcode

    1. with (object des großes spielers){ y-=spritehöhe(pl groß)-spritehöhe(pl klein)}


    hoffe das reicht als denkanstoß
    edit2: mann da schreib ich mir einen ab, und es hätte wesentlichs chneller gehn können X(

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

  • z.B. so:

    GML-Quellcode

    1. if !collision_rectangle(x-16,y-16,x+16,y+16,obj_wand,0,1)
    2. {
    3. //wird vergrößert
    4. }
    Meine Spiele:
    - Mission A
    - Mission B
    - The Virus 1, 2, 3
    - The Virus 4: The Excision
    - Blur melts Snow
    - Blur melts Snow: 2nd Version
    - Cave Jumper

    Hauptrojekt: Party Mania(Arbeitstitel) - große Multiplayer-Minispielsammlung
    In Planung: Planet Jumper(Nachfolger von Cave Jumper)
  • Vielen Dank, gamer_08 für die so ausführliche Antwort! :thumbup:

    Ich werd das heute Nachmittag austesten und mich solange damit spielen, bis ich das hab was ich will...
    Falls dann trotzdem noch Probleme auftreten, meld ich mich noch einmal.

    mfG

    The Jack
  • Es würde noch eine einfachere Variante geben, wenn du NUR willst, dass die Figur kleiner und größer wird:

    Bei deinem Event fürs Größer-werden: (zB. press space)

    GML-Quellcode

    1. if image_xscale=1
    2. {
    3. image_xscale=2
    4. image_yscale=2
    5. }
    6. else
    7. {
    8. image_xscale=1
    9. image_yscale=1
    10. }


    Sieht von der Grafik her nicht soo gut aus aber es wäre halt auch eine Möglichkeit.^^

    lg
    Dieser Beitrag wurde bereits 8.675.628 mal editiert, zuletzt von »levarris07« (Heute, 11:33)
  • Vieleicht kannst du auch versuchen mit der Funktion move_outside_all(dir,max_dist) zu experimentieren.

    Sie bewegt das Object automatisch dahin wo es keine Collisionen mehr wahrnimmt.

    Du musst aber eine richtung vorgeben. Ver such mit den oben genannten verfahren zu überprüfen ob sich ein Object z.b. rechts befindet und execute dann: move_outside_all(180,-1)

    Dies lässt das Object sozusagen nach link "ausweichen" wenn es vergrößert wird.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)