GALACTICA: Path problem

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

  • GALACTICA: Path problem

    Hi,

    ich versuche im moment Galactica zu programmieren. Dabei stoße ich auf kleine Probleme.

    Beim Original Galactica kommen die Feinde aus dem Bildschirm in geordneter Struktur herein. Das habe ich mit einem View gelöst. Nur das sie nicht geordnet kommen, sondern alle in einem Block.

    Also die Objekte auf dem Pfad sollen einzeln dem Pfad folgen und nicht alle geordnet! Wie mache ich das am besten?

    JUBBA
    Dateien
    Langfristig habe ich vor ein Spiel zu entwickeln ähnlich wie das Brettspiel "Die Siedler von Catan".
    Nach Möglichkeit sogar Onlinefähig. Ein weiter weg, ich weiß!!!
  • Hi battlegorge,

    "image_angle" funktioniert nur in der registrierten Version. Trozdem konnte ich duch klicken auf "ignore" sehen was ungefähr passiert.

    Leider wäre deine Idee mit hspeed und vspeed zu umständlich, wenn ich z.Bsp für mehrere Level 30 Mal Path machen möchte.

    Jubba
    Langfristig habe ich vor ein Spiel zu entwickeln ähnlich wie das Brettspiel "Die Siedler von Catan".
    Nach Möglichkeit sogar Onlinefähig. Ein weiter weg, ich weiß!!!
  • Das mit dem Timer ist ne schöne Sache, sowas habe ich mir viel komplizierter vorgestellt. Allerdings denke ich trotzdem, das es viel einfacher ist, die Flugbewegungen der Enemies mit Path zu realisieren.

    Übrigens, verstehe ich das richtig, das " image_angle" das Objekt zu der gewünschten Richtung dreht, so das die Objekte immer in die Flugrichtung schauen?
    Kann man das auch anders realisiseren ohne "image_angle"?

    JUBBA

    PS: Über eine Lösung, wegen meinem Path-Problem würde ich mich immer noch freuen!
    Langfristig habe ich vor ein Spiel zu entwickeln ähnlich wie das Brettspiel "Die Siedler von Catan".
    Nach Möglichkeit sogar Onlinefähig. Ein weiter weg, ich weiß!!!
  • @image_angle:

    draw_sprite_ext(sprite,subimg,x,y,xscale,yscale,rot,color,alpha) Zeichnet das Sprite skaliert, um rot Grad gegen den Uhrzeigersinn gedreht, mit den Faktoren x,y. color gibt die Farbe an, mitder das Sprite geblendet wird (benutze c_white um nicht zu blenden). alpha gibt die Durchsichtigkeit des Sprites an. Ein Wert von 0 macht es komplett transparent. Ein Wert von 1 komplett undurchsichtig.


    bei rot gibts du die direction ein in der das objekt gedreht wird.
    Ich weis aber nicht ob das auch nur für geregte ist.
    *gähn*

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

  • Ja, diese netten Ffunktionen gibs nich umsonst. Wenn Du Sprites drehen wilst, mußt Du das per Hand machen. Ich empfehle mindestens 24 Frames pro Sprite. Dann braucht man nur noch wie in der GM help beschrieben, jeden step oder end step den image_index auf image_number / 360 * direction setzen. Das klappt bei mir wunderbar.
    Denk dran, daß Du paths auch relativ, gestreckt, gedreht etc abwandern lassen kannst. Damit läßt sich bestimmt was zaubern. Du kannst auch einen (evtl unsichtbaren) "Anführer" in der Gruppe von Feinden haben, der als Parent fungiert oder einfach nur als Referenz für die Positionen der anderen. Solche unsichtbaren Objekte kann man doch wie Eisenbahnen das Feld auf und ab laufen lassen, und die Feinde können immer aufspringen und ne Runde in x-Richtung mitfahren oder so.
    Übrigens, Gorgie, Dein timer gefällt mir sehr gut. Ich werde das quasi 1:1 übernehmen für ein Squad, was in einen Transporter einsteigt. Zumindest den Teil hier

    Quellcode

    1. timer+=1
    2. if timer=60+multi*20
    3. {
    4. instance_create(x,y,obj_enemy1)
    5. multi+=1
    6. if multi=8 multi=0
    7. }

    Komisch... so Semikolons oder Klammern braucht unser Fade-Helier wohl nicht. Na dann bauch ich von jetz an auch keine mehr.

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von Melancor ()

  • @Drehen
    Das mit dem drehen der sprites lass ich erstmal weg

    @battlegorge
    Dein Timer hat mir geholfen, um meine Enemies nacheinander zu kreieren. Allerdings werden diese an meinen Path angefügt!

    Neues Problem:
    Wie schaffe ich das, das wenn alle Enemies erschossen werden ein BONUS von zB. 100 Score ausgezahlt wird, vielleicht mit einem Sprite an der Stelle wo der letzte erschossen wurde, noch zusätzlich visualisieren!
    Dateien
    Langfristig habe ich vor ein Spiel zu entwickeln ähnlich wie das Brettspiel "Die Siedler von Catan".
    Nach Möglichkeit sogar Onlinefähig. Ein weiter weg, ich weiß!!!
  • Hi,

    @Bonus
    das problem mit dem Bonus habe ich fast gelöst. Manchmal erschieße ich zwei enemies gleichzeitig, dann wird der Zähler nicht auf null gesetzt

    @unendlich viele Enemies
    Außerdem ist es manchmal so, das unendlich viele Enemies erzeugt werden. Das passiert nicht immer und ich weiß nicht wodurch das genau ausgelöst wird, deshalb finde ich den Fehler nicht.

    1.)Im "controller_enemy_r1" erstelle ich die Anzahl der Enemies "global.Anzahl_Enemies_1 = 10", so kann ich auch das mir dem Bonus lösen. Wenn der Zähler auf null (siehe 3.) herunterzählt , dann gibts den Bonus"

    2.)Im "scr_enemy_r01" werden solange Enemies erstellt bis "multi=global.Anzahl_Enemies_1"

    3.)wenn mein schuss "obj_mybullet" mit "obj_enemy1" kollidiert und "global.Anzahl_Enemies_1" ist auf Null runtergezähl,t dann gibt es den Bonus!

    FRAGEN:
    F1:Warum bzw. weshalb kommen manchmal unendlich viele enemies?

    F2:Wie bekomme ich das so hin das, wenn alle Enemies von mir zerstört werden, das der Bonus ausgezahlt wird?

    JUBBA
    Dateien
    Langfristig habe ich vor ein Spiel zu entwickeln ähnlich wie das Brettspiel "Die Siedler von Catan".
    Nach Möglichkeit sogar Onlinefähig. Ein weiter weg, ich weiß!!!
  • ALso ich habe jetzt mal etwas an deiner gm6 verändert und jetzt kommen weder unendlich viele Gegner und den Bonmus bekopmmt man erst, wenn alle Gegner tot sind.
    Ich habe das so gemacht:

    GML-Quellcode

    1. global.Anzahl = 20 //wie viele Gegner

    und in dein Script:

    GML-Quellcode

    1. // Diese Script dient dazu, um Feinde automatisch zu erstellen.
    2. timer+=1 //da dieses Script im Step-Event von obj_enemy_r1 ausgeführt wird, wird timer jedes Frame hochgezählt
    3. Abstand=16 //Der Abstand zwischen den erzeugten Ememies
    4. // Es werden solange Enemies erzeugt bis "multi" erreicht worden ist siehe unten ***
    5. //Bsp. 1.Enemy wird erstellt, wenn timer=30 ist, dann 2. timer=30+1*Abstand, dann 3. timer=30+2*Abstand usw.
    6. if (timer=30 + multi * Abstand) and global.Anzahl != 0
    7. {
    8. instance_create(-32,200,obj_enemy1) //damit die Enemies ausserhalb des Raumes erzeugt werden , muss x "negativ" sein z.B. "-50"
    9. //Außerdem muss man darauf achten, das der Path im "obj_enemy" auf "relative" steht
    10. multi +=1
    11. global.Anzahl -= 1
    12. }
    Alles anzeigen

    und jetzt geht es

    Die datei gibt es hier : Der link
  • Danke,

    der Fehler lag also im Grunde darin das ich nur eine globale Variable Anzahl hatte und diese für Enemy und Bonus gleichzeitig verwendet habe und die Bedingung mit der If Anweisung war nicht ganz korrekt im "scr_enemy_r01".

    Dann mache ich mal weiter,
    JUBBA
    Langfristig habe ich vor ein Spiel zu entwickeln ähnlich wie das Brettspiel "Die Siedler von Catan".
    Nach Möglichkeit sogar Onlinefähig. Ein weiter weg, ich weiß!!!