Neu hier und gleich einen Haufen Fragen :) (Tower defence)

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

  • Neu hier und gleich einen Haufen Fragen :) (Tower defence)

    Erst mal hallo Zusammen,

    ich bin neu hier beschäftige mich seit einigen Tage mit Game Maker Studio und hatte in der Vergangenheit bereits Erfahrung mit diversen Programmier- und Skriptsprachen.

    Um mich in das Tool einzulernen wollte ich mit einem Tower Defence Spiel anfangen, da mir diese Games unter den einfachen Browsergames noch an meisten Spaß machen.

    Vermutlich wurden einige der Fragen die ich stelle schon 10 mal beantwortet aber erfahrungsgemäß ist das was man in der Historie findet nicht immer automatisch der Weisheit letzter Schluß und nicht selten für die richtige Antwort aber für die falsche Version usw.

    Ich habe folgende Probleme mit meinen Towern:

    Flüssige Bewegung beim Drehen des Turms. Ich habe das Spiel mit 60 Ticks laufen und mein Turm soll sich in einer flüssigen Bewegung drehen egal wie schnell der Gegner daran vorbei rennt. Mit bloßem Ausprobieren komme ich da nicht weiter. Gibt es da eine Formel für "sieht nach flüssiger Bewegung aus bei 60 Ticks?" Oder Sieht das unflüssig aus weil ich als Sprite nur ein Bild habe das ich drehe anstatt pro Drehung ein neues richtig ausgerichtetes Bild aufzurufen?

    Schußgenauigkeit. Mein Turm dreht sich, der Gegner rennt und die Bullets haben auch noch eine unterschiedliche Geschwindigkeit. Meistens schieße ich so daneben. Entweder muss ich den Turm so drehen das vorausberechnet wird dass die Bullets dort auftreffen wird wo der Gegner sein wird oder ich muss die Bullets selbst steuern was nach Homing funktion und damit eher unschön aussehen wird. Weis jemand eine Lösung?

    Und dann habe ich noch ein Problem mit den Ebenen und den Mauern. Wenn sich mein Turm Richtung Mauer dreht zerstört sich der Schuß an der Mauer. Wie setze ich meinen Schuß denn eine Ebene höher so das er über die Mauer hinweg fliegt? (Wie gesagt Anfänger) :)


    Gruß

    Sindar
  • Hallo,
    erstmal dachte ich nur so HÄ!...
    aber ich glaub ich weiß was du meinst
    beim ersten Problem kann ich dir nur pixel-interpolation empfehlen, keine ahnung woran das liegen kann...
    beim zweiten Problem kann ich eigentlich nur sagen das das ja realistisch ist, das wenn sich das ziel bewegt, man schwerer trifft, mach doch einfach mal die Schüsse schneller.
    beim dritten Problem sieht es so aus als hättest du das so programmiert, das der kaputt geht... vielleicht zerstörst du den Schuss ja im Collisonevent oder so, kp XD
    Kopiere dies in deine Signatur, um es in deiner Signatur zu haben.
    Achtung: Dieser Beitrag läuft ende des Monats ab, bitte lese ihn noch vor dem Monatswechsel...
    Nach langer zeit wieder im Forum aktiv :D
  • Alsoo;

    1) Es gibt keine richtige Formel wie das flüssig aussieht, das kommt aufs Gesprür an, aber du solltest die Ausrichtung jeden Step berechnen lassen, dann dreht sich der Turm aber auch immer so schnell wie möglich zum Ziel. Damit der Turm sich nicht in ein paar Ticks um 90 grad dreht, solltest du zB alle 10 steps/ticks, die neue Richtung abspeichern und dann den Turm sich in diese Richtung rotieren lassen bis seine roation mit dem gespeicherten Zielwert übereinstimmt.

    2) Da du diesen Zielwert also nun alle 10 steps abspeicherst und der Turm sich dorthin dreht, kannst du auch gleich den Turm etwas vorausschauend zielen lassen, zB 32px in richtung des ziels.

    GML-Quellcode

    1. zielwert = point_direction(x,y,ziel.x+lengthdir_x(32,ziel.direction),ziel.y+lengthdir_y(32,ziel.direction))

    Damit zielt der Turm immer 32px vor das Ziel in die Laufrichtung des ziels.

    3) Damit der Schuss nicht sofort an der Mauer zerstört wird wenn du längs der Mauer schießt, solltest du im Create Event des Schusses eine variable erstellen (zB scharf = 0) und dann im step event

    GML-Quellcode

    1. if scharf == 0
    2. {
    3. if not place_meeting(x,y,obj_mauer)
    4. {
    5. scharf = 1
    6. }
    7. }
    8. if scharf == 1
    9. {
    10. //collision mit gegner bzw mauer etc
    11. }
    Alles anzeigen

    so etwas in der Art verhindert das dein Schuss solange er auf einer Mauer startet an der Mauer zerstört wird, verlässt der Schuss die Mauer wird er scharf udn kann auf alles wie auch die mauer treffen.
    Wenn du haben wolltest das der Schuss generell nicht an der mauer zerstört wird, dann bau einfach kein Kollisionsevent ein. (<- aber ich denke das ist nciht das Problem das du da hattest)

    Und 4) Willkommen im Forum!

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)
  • Da ich ja momentan an einem TD arbeite, kenne ich deine Probleme q:

    zum 1.

    Ich verwende dieses script:

    GML-Quellcode

    1. image_angle =(image_angle+(sin(degtorad(ZIELdirection-image_angle))*24));

    Die 24 ist die Geschwindigkeit der Drehung.
    ZIELdirection muss vorher bestimmt werden, z.B. mit point_direction().

    Zu den anderen beiden Problemen haben Larsi und Aku_Ryou schon genug gesagt ^^

    Hoffe ich konnte ein wenig helfen.

    -Nils

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