Problem mit einem Fadenkreuz

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

  • Problem mit einem Fadenkreuz

    Hi Leute

    Bin derzeit am prototypen und habe ein Problem beim erstellen eines Fadenkreuzes. Eigentlich ne einfache Sache dachte ich aber macht mich noch wahnsinnig.
    Mein Aufbau ist wie folgt

    Ein Circle der die Fadenkreuz Mitte darstellt
    4 Lines die sich um den Circle anordnen.
    Die Lines sollen sich je nach Spielergeschwindigkeit und je nach dem ob man gerade geschossen hat weiter von einander entfernen. Funktioniert soweit alles besten.
    Nur habe ich das Problem das eine Linie dem Kreis perfekt folgt und die anderen drei immer hinterherhinken. Ich habe das ganze sogar soweit reduziert das die Lines einfach nur der Position von dem Kreis folgen sollen aber irgendwie hinken die anderen immer hinterher.
    Habe es jetzt sogar auf 2 Stück reduziert und eine davon passt und die andere hinkt immer hinterher. Ich vestehe einfach nicht wieso. Sieht zwar irre smooth aus aber das möchte ich jetzt hier nicht haben. Das Hinterherhinken ist sowohl auf der x wie auf der y richtung der Fall.

    Was der Kreis macht

    GML-Quellcode

    1. instance_create(x,y,obj_crosshair_p1_linexplus)
    2. instance_create(x,y,obj_crosshair_p1_linexminus)
    3. instance_create(x,y,obj_crosshair_p1_lineyplus)
    4. instance_create(x,y,obj_crosshair_p1_lineyminus)


    Was die Line X+ macht:

    GML-Quellcode

    1. x = obj_crosshair_p1_circle.x +14
    2. y = obj_crosshair_p1_circle.y



    Was Line X- macht:

    GML-Quellcode

    1. x = obj_crosshair_p1_circle.x -14
    2. y = obj_crosshair_p1_circle.y



    Beide Lines sind im Step Event. Ich verstehe nicht warum Line X+ dem Kreis perfekt folgt und Line X- immer hinterherhinkt.
    Gerade bei der Y Position sehe ich keinen Unterschied und verstehe nicht warum es so hinterherhinkt.

    Bin verwirrt, bitte um Hilfe.


    EDIT:
    Habe herausgefunden das es an der Hierarchie im Ordner Objects zu tun hat. Wenn ich alles Lines Objekte unterhalb des Circle Objects anordne dan geht es... Kann mir jemand sagen warum das so ist? Ist das ein Bug, oder hat das einen sinnvollen Hintergrund?

    Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von Jomnitech ()

  • Einfach nur Nein !

    Du musst diese Objekte sich im Begin Step bewegen lassen. ABER : Nein! Nicht so! TadelTadel! :whistling:

    Es reicht einen Kreis und 4 Striche zeichnen, du brauchst keine 5 Objekte dafür.

    GML-Quellcode

    1. var radius = genauigkeit;
    2. var midX = view_xview[0]+(view_wview[0]/2);
    3. var midY = view_yview[0]+(view_hview[0]/2);
    4. draw_circle(midX,midY,radius,true);
    5. //etc... oder hier deine sprites drawen lassen!


    Hat es einen bestimmten Grund, dass du 5 Objekte benutzen willst?

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)
  • Erstmal danke für deine Atwort. Muss mir anscheinend den Unterschied zwischen begin Step, Step, und End Step mal durchlesen.

    Dein Code muss ich mal erst entschlüsseln.
    Mir ist die Funktion des Draw-Events noch nicht bekannt.

    Ich dachte mir das ich das im Endeffect auf zwei objecte "Circle" und "Line" begrenze und die Lines entsprechend ausrichte.

    Das mit dem erstellen von 5 Objekten hatte lediglich den Grun schnell ein Ergebniss zu erzielen ob das was ich vorhabe funtioniert. Hat also keinen tieferen Grund, ist lediglich amateurhafte Schlamperei.
  • Ah ok, gut, damit ich weiß auf welchem Level du unterwegs bist.

    Also das Draw Event, dient dazu sprites oder draw funktionen zu zeichnen.
    Du kannst also in einem Object (zB auch im Spieler) das sprite des Spielers, und dann die Bestandteile des Fadenkreuzes zeichnen lassen. zB immer dorthin wo gerade die maus ist. Du benutzt die Koordinaten die du bisjer in dem step event für die EInzelobjekte angegeben hast um das fadenkreuz an die richige stelle zu drawen.

    GML-Quellcode

    1. draw_sprite(spr_fadenkreuz_circle,0,mouse_x,mouse_y);
    2. draw_sprite(spr_fadenkreuz_line,0,mouse_x+14,mouse_y);
    3. //etc...


    wenn du soetwas in der art machst wirst du dich schnell auskennen.
    Im zweiten argument der draw sprite funktion wo ich immer 0 hineingeschrieben habe kannst du die nummer vom subimage des sprites angeben.

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)