mein intelligentes sprite bleibt dumm...oder wie wird man herr über sein sprite

  • GM 8

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

  • mein intelligentes sprite bleibt dumm...oder wie wird man herr über sein sprite

    huhu ,

    ich möchte heute mal mit einer frage zu sprites an euch herantreten. mein versuch ist es einem sprite das passende image zuzuweisen, je nachdem ob neben dem objekt ein weiteres steht. im großen wacht das mein skript...aber halt fehlerhaft. es gibt 5-6 objekte bei denen die zuordnung des sprites nicht richtig will. zum verdeutlichen meines problems hab ich mal eine gm8.1 datei angehengt in dem mein versuch gut zu sehen ist.

    wenn jemand mir helfen könnte die fehler wegzubekommen wäre ich sehr dankbar, da ich net so recht weiss warum die fehler passieren.

    mfg
    Dateien
  • thx für die antwort...hab mal delete underlying angestellt und siehe da es passiert nur noch selten der fehler, leider kommt er noch vor. das ausschliesslich aber nur noch auf der "oberseite" des sprites, unterseite kann man "bearbeiten" und der fehler tritt nicht auf. werde mal weiter dran testen, das hat mir schonbmal sehr gehlfen, thx =)

    edit: supi hat funktioniert, lag tatsächlich daran dass sich 2 objekte überschnitten haben. hab das gelöst. lasse das thema aber noch offen da dies nur der anfang zu dem ganzen war. werde weitere probs hier rein posten. thx nomma =)

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

  • ich kann dir jetzt auch erklären, woran das liegt. du schuast immer, ob eine Kollision mit einem anderen Objekt stattfinden würde, wenn du die instanz um einen pixel verschiebst. Wenn nun an einer Position zwei instanzen des Objektes vorhanden sind, ist diese bedingung immer (also für alle richtungen) erfüllt, da ja immer eine Kollision stattfindet, wenn du die Instanz um nur einen pixel verschiebst. Deshalb glaubt deine Instanz von allen Seiten von anderen Instanzen umgeben zu sein, was aber nicht der Fall ist.

    wenn du statt 1 Pixel 16 pixel beim Place-meeting verwenden würdest, dürfte der Fehler nicht mehr auftreten, da die Instanz nur das benachbarte Rasterfeld überprüft, nicht aber das eigene.

    ich habe zur verdeutlichung ein Bild gemacht.
    Bilder
    • kollison.png

      26,03 kB, 920×370, 256 mal angesehen
  • sehr vorbildliche erklärung! =) hab es jetzt auf 16 eingestellt. thx.
    da ich schon schrieb dass ich dem sprite mehr funktionen zuweisen möchte hätte ich noch ne frage:

    ich lasse per zufall an den aussenflächen des sprites objekte spawnen. z.b. kristalle oder stalaktiten.

    GML-Quellcode

    1. if image_index=1
    2. {
    3. r=floor(random(100))
    4. if r>0 && r<5 {inst=instance_create(x,y,obj_kristall) inst.sprite_index=spr_kristall_o
    5. }
    6. }
    7. if image_index=7
    8. {
    9. r=floor(random(100))
    10. if r>0 && r<5 {inst2=instance_create(x,y+16,obj_kristall) inst2.sprite_index=spr_kristall_u
    11. }
    12. }
    Alles anzeigen


    der code sagt ob ein kristall an der ober, oder unterseite des sprites spawnen soll.

    nun ne frage, ich will an dem sprite verschiedene gräser "wachsen" lassen. da ich aber denke dass objekte zu viel leistung benötigen habe ich über draw event auf nem surface gedacht. wie stelle ich das aber an? der sprite müsste ja iwie wissen wo er steht, und an der passenden stelle des surface müsste dann nen gras-sprite gedrawt werden. für tipps und anhaltspunkt wie ich das hinbekomme wäre ich enorm dankbar =)


    mfg