adressierung von variablen

  • adressierung von variablen

    hab ne kurze frage:

    im step event eines obj wird abgefragt ob sich oben oder unten ein object namens colorchanger befindet:

    if ((place_meeting(x,y+1,obj_colorchange)) or (place_meeting(x,y-1,obj_colorchange)))
    {
    color=obj_colorchange.color;

    ist dies der fall, soll die variable color geändert werden, und zwar soll sie den gleichen wert bekommen wie die varialbe color in der instance colorchange, die oben im code abgefragt wurde (rot)
    aber so wie der code jetzt ist stimmt der grüne bereich nicht, da es ja mehrere instanzen des objects colorchange gibt, mit verschiedenen werten.
    meine frage also, wie kann ich am besten die instance die oben abgefragt wird(rot) direkt adressieren?
  • collision_point(x,y,obj,prec,notme) This function tests whether at point (x,y) there is a collision with entities of object obj.
    collision_rectangle(x1,y1,x2,y2,obj,prec,notme) This function tests whether there is a collision between the (filled) rectangle with the indicated opposite corners and entities of object obj. For example, you can use this to test whether an area is free of obstacles.
    collision_circle(xc,yc,radius,obj,prec,notme) This function tests whether there is a collision between the (filled) circle centered at position (xc,yc) with the given radius and entities of object obj. For example, you can use this to test whether there is an object close to a particular location.
    collision_ellipse(x1,y1,x2,y2,obj,prec,notme) This function tests whether there is a collision between the (filled) ellipse with the indicated opposite corners and entities of object obj.
    collision_line(x1,y1,x2,y2,obj,prec,notme) This function tests whether there is a collision between the line segment from (x1,y1) to (x2,y2) and entities of object obj. This is a powerful function. You can e.g. use it to test whether an instance can see another instance by checking whether the line segment between them intersects a wall.
    Wenn du statt place_meeting eine von den Funktionen zur Kollisionsprüfung verwendest dann bekommst du die ID des Objekts welches an dieser Stelle ne Kollision herbeiführt zurück.
    Damit kannste dann direkt auf den richtigen Colorchanger zugreifen.
  • danke, hat geholfen....hätt ich aber auch selber draufkommen müssen
    jetzt hab ich noch ein komisches problem:

    im destroy event von einem object steht:

    tot=instance_create(x,y,obj_ball_dead);
    tot.color=color

    und im create event von dem obj obj_ball_dead


    if color =1 {blablabla....}



    jetzt kommt aber ein ERROR mit der Inschrift...ka...dass halt die variable color nicht existiert, obwohl ich sie doch im destroy event eines anderen obj erstellt habe.
  • setz mal global. davor also

    GML-Quellcode

    1. global.color


    wenn du das davorsetzt, dann bedeutet das, dass es im ganzen Spiel zur Verfügung steht, ohne das global.color stehts nur dem Objekt wo es existiert zur Verfügung.
    Gruß Gamer
  • naja die reihenfolge ist folgendermassen:

    GML-Quellcode

    1. tot = instance_create(..);
    2. Create Event: if color ...blablabla...//variable wird schon hier abgefragt, obwohl sie nicht existiert
    3. tot.color = ... //variable wird erst hier erstellt



    eine lösung wäre, zb die folgende:
    du änderst das create event in user defined 0 oder so
    und im code, nachdem du die instance erstellt hast, führst du dieses event aus:

    GML-Quellcode

    1. tot = instance_create(..)
    2. tot.color = ...
    3. with (tot) event_perform(ev_other,ev_user0)
    "das war meine letzte flamewar PM an dich ."