Up-Downshooter Waffenproblem

  • Up-Downshooter Waffenproblem

    Hallo
    ich habe da mal wieder ein problem mit einem Top-Down-Shooter

    Mein Problem ist, dass ich einem NPC gerne eine Waffe in die Hand drücken würde,
    aber so, dass sie (ausgehend von direction 0) auf Punkt weapon_x und weapon_y liegt. Und dass sie sich dabei mitdreht.
    Ich habe es schon mit lenghtdir_x/y versucht, aber es hat nie so funktionier wie es sollte.
    Mit der Suchfunktion habe ich auch nichts gefunden.
    Ich habe etwas angehängt, wie das ganze aussehen sollte. Aber ich will nicht extra Sprites(position der objekte im sprite)
    ändern wie dort, das ist eher eine Notlösung.

    test2.zip
    wäre sehr dankbar für eure hilfe.
    Der Hammer fällt manchmal vom Tisch.
  • Hi, vielleicht verstehe ich dich auch falsch, aber kannst du denn nicht einfach dementsprechend einen Sprite zeichnen und dann diesem mit image_angle ausrichten lassen ?
    Hier mit dem vielleicht für den Spieler im Step

    GML-Quellcode

    1. image_angle = point_direction(x,y,mouse_x,mouse_y);

    Oder sonst musst du hald einfach ein 2. Objekt erstellen das mit orgin, x und y allenfalls ausrichten.


    Hoffe das wars, sonst genauer beschreiben.

    Gruss,
    Xtreme
    Das Problem zu erkennen ist wichtiger,
    als die Lösung zu erkennen,
    denn die genaue Darstellung des Problems führt zur Lösung.
    ( Albert Einstein )


    I am an according to the gml n00b test!
  • also ... wie oben erwähnt , möchte ich keine sprites verändern ....
    wir gehen davon aus , es gibt verschiedene gegnertypen (unterschiedliche größen und haltungen)
    für diese möchte ich aber die gleichen waffen verwenden , wie beim spieler.
    es geht darum das Sprite an der richtigen Stelle zu drawen und nicht für eine Sache 1000 Sprites mit unterschiedlicher Origin zu erstellen.
    außerdem kostet das platz für jeden ein eigenes sprite zu machen ...
    Der Hammer fällt manchmal vom Tisch.
  • Du musst an dem Origin der Waffensprites nichts verändern, sondern nur ihre Position am jeweiligen Gegner anpassen. Dazu brauchst du keine verschiedenen Sprites.

    An deinem Code im create event von object0 solltest du außerdem folgendes ändern:
    statt:

    GML-Quellcode

    1. weapon_x[0] = 0;
    2. weapon_y[0] = 21;
    3. weapon_sprite_source[0] = s_weapon;
    4. weapon_sprite[0] = sprite_duplicate(weapon_sprite_source[0]);
    5. sprite_set_offset(weapon_sprite[0],weapon_x[0],weapon_y[0]);

    das hier:

    GML-Quellcode

    1. weapon_x[0] = 0;
    2. weapon_y[0] = 21;
    3. weapon_sprite_[0] = s_weapon;
    4. sprite_set_offset(weapon_sprite[0],weapon_x[0],weapon_y[0]);

    Es ist nicht nötig, für jeden Gegner ein eigenes Sprite zu erstellen, wenn es schon einmal vorhanden ist.
  • Du scheinst das immer noch misszuverstehen:
    Ich möchte einfach nur das Sprite richtig zeichnen (So dass das Sprite immer beispielsweise am obersten Strich des Kreises ist) aber OHNE irgedein Sprite zu dublizieren. Ungefähr so etwas wie die Origin eines Sprites zu simulieren.
    Nein stimmt, man muss nicht für jedes Objekt ein eigenes Sprite erstellen. Würde man es hinbekommen das Standartsprite, relativ zu den Variablen richtig zu zeichnen, muss man gar kein eigenes erstellen, und das war der Punkt.
    Außerdem bedeuten die ; gar nichts. Zumindest nicht in den meisten Fällen. Und absolut unnötig sind sie, wenn man sowieso nur eine Aktion pro Zeile macht (meiner meinung jedenfalls).
    Der Hammer fällt manchmal vom Tisch.
  • Du möchtest also den Origin eines Sprites dynamisch anpassen, ohne die Ressource selbst zu ändern. Sag das doch gleich.

    Hier die Lösung (mit lengthdirx/y):
    test2 gelöst.zip

    Übrigens dienen die Semikola einer besseren Übersicht und haben häufig auch einen praktischen nutzen (sie trennen Codestücke voneinander).
    Dateien
    • test2.zip

      (13,7 kB, 165 mal heruntergeladen, zuletzt: )
  • Ich habe da ungefähr das selbe Problem.

    Aber so wie in der gmk(die ich gleich mal zu gm6 convertiert habe) funktioniert das nicht 8|

    Du hast zwar einen Abstand (was ja wohl auch nicht weiter schwer ist) aber du kannst die X und Y nicht wie bei einer Origin anpassen. Genau das hast du nämlich getan, mit lenghtdir einen rotierenden Abstand geschaffen, mehr nicht. Aber eine "simulierte Origin" sehe ich da nicht...

    Also nach einer Lösung sieht das nicht aus.

    Und für mich verschlechtern Semikola die Übersicht solange ich nicht mehere Befehle in eine Reihe packe.

    Die Community die ich einst liebte, ist mehr und mehr zu einer Plattform für kleine Kinder, selbstgerechte Gutmenschen und Heuchler verfallen.
    Viele Jahre habe ich ihr beim Sterben zugesehen aber mittlerweile habe ich alle Hoffnung aufgegeben.

    Golden Sun Camera Sample
    Mechferno Alpha 1.14
    Fruge Beta 3.01
  • Benutzer online 1

    1 Besucher