was mach ich mit den surfaces falsch?

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

  • was mach ich mit den surfaces falsch?

    hi leutz,

    ich hab n kleines problem. und zwar ich will im step event von nem object alle sprites von den children auf ne surface malen. und des mach ich so:

    create:

    GML-Quellcode

    1. sur_shadows=surface_create(room_width,room_height)


    step:

    GML-Quellcode

    1. surface_set_target(sur_shadows)
    2. draw_sprite_ext(...)


    draw:

    GML-Quellcode

    1. draw_surface(sur_shadows,0,0)


    was rauskommt ist das hier:


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

  • Mhhh oha! das sieht garnicht gut aus...
    Meine Glaskugel ist total verkalkt, und es dauert mindestens eine Woche bis die vom Versand eine neue liefern können...

    aber meine vermutung ist:

    du hast das draw event bei einem nicht child verwendet, mach das einfach in den parent rein und du hast keine Probleme.

    und als draw sprite machst du einfach

    GML-Quellcode

    1. sprite_index
    so zeichnet jedes child sein eigenes sprite...

    BTW: draw befehle nur in den draw event, es sei denn du updatest manuell dein Bild!

    MfG Genesis
  • Meine sichere Vermutung ist, dass du du dass

    GML-Quellcode

    1. surface_reset_target()
    vergessen hast. Und zusätzlich würde ich auch im Step

    GML-Quellcode

    1. draw_clear_alpha(0,0)
    ausführen.

    Außerdem hoffe ich, dass du es so hemacht hast, wie Genesis esgesagt hat, und das nicht in jedes Child eingesetzt hast. Am leichtesten wäre ein Controllerobjekt, das das ganze erleigt. Bei diesem schreibst du dann im Step-Event:

    GML-Quellcode

    1. surface_set_target(sur_shadows)
    2. draw_clear_alpha(0,0)
    3. with (obj_child)
    4. {
    5. draw_sprite_ext(...)
    6. }
    7. surface_reset_target()

    © 2008 by Teamgrill Productions
  • Heist das aber nicht, dass jedes Objekt seine eigene Surface hat?
    Der Code,der oben steht, wird doch von jedem Child ausgeführt?
    Ich glaub, du machst da was falsch..
    Haben manche Child-Objekte Code im Create-Event? Wenn ja, dann setze in diesen Events noch ein event_inherited() ein.
    Oder lad am besten die Datei hoch.
    "das war meine letzte flamewar PM an dich ."
  • Drum sagte ich ja, du sollst ein Controllerobjekt machen und den Code darin ausführen. und wenn du

    GML-Quellcode

    1. with (obj_parent)

    da drin verwendest, wird eh für jedes child das sprite gezeichnet.

    © 2008 by Teamgrill Productions
  • Du hast ein Parent und mehrere Childs. Du erstellst ein Controllerobjekt, das das Surface erstellt und mithilfe von

    GML-Quellcode

    1. with (obj_parent)
    2. draw_sprite_ext(sprite_index,image_index,x+4,y+4.......)

    für jedes Child den Schatten aufs surface zeichnet. Du brauchst in den Childobjekten keine derartigen Codes ausführen, die müssen nichts mit dem Controllerobjekt zu tun haben.

    © 2008 by Teamgrill Productions
  • so vorgestern hab ich das problem endlich gelöst und alles hat funktioniert. natürlich hab ich auch alles abgespeichert. aber wenn ich es jetzt starte, dann wird beim transparenten teil von meinen schatten kein anderer schatten gezeichnet. das sieht dann so aus:


    ich habs ein conrollerobject(obj_shadows) mit dem step event:

    GML-Quellcode

    1. surface_set_target(sur_shadow)
    2. draw_clear_alpha(c_white,0)
    3. if room!=rom_villa1&&room!=rom_villa2&&room!=rom_villa3&&room!=rom_villa4
    4. {
    5. with obj_solid_parent
    6. {
    7. yshadow=sprite_get_bbox_bottom(mask_index)-sprite_get_bbox_top(mask_index)
    8. draw_sprite_ext(sprite_index,image_index,x,y+yshadow,1,-1,0,c_black,1)
    9. }
    10. with obj_shadow
    11. {
    12. draw_sprite_ext(obj_player.sprite_index,obj_player.image_index,x1,y1,image_xscale,-1,image_angle,c_black,1)
    13. draw_sprite_ext(obj_player.sprite_index,obj_player.image_index,x1,obj_player.y+obj_player.z,image_xscale,-1,image_angle,c_black,1)
    14. }
    15. }
    16. surface_reset_target()
    Alles anzeigen

    obj_shadow!=obj_shadows
    alle schatten sind eigentlich die sprites der objects, bei denen wird der schatten aber schon gezeichnet

    EDIT vom 11.11: komischerweise funktionierts jetz wieder... derweil hab ich gar nichts geändert


    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von lolliger_joj ()

  • Benutzer online 6

    6 Besucher