Schuss durchdringt Wände. Zu Schnell?

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

  • Schuss durchdringt Wände. Zu Schnell?

    Hi Community,

    Ich hab ein Objekt "obj_shot" mit x=50 und speed=50.
    Gegner können durch Wände, die kleiner als 80(!)pixel breit durschießen.
    Und aus bestimmten Entfernungen kann man Gegner auch nicht treffen.
    Ich hätte mir gedacht, dass eventuell der Schuss zu schnell ist, aber vl. gibts ja eine andere Lösung.

    Danke für die Hilfe!
    Euer Lev^^
    Dieser Beitrag wurde bereits 8.675.628 mal editiert, zuletzt von »levarris07« (Heute, 11:33)

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

  • Ja, da haste richtig geraten, evtl. wäre es in so einem Fall besser, eine Linie als Schussbahn zu definieren, die auf Kollision prüft:
    if (collision_line(...))
    Und das Geschoss kannste unabängig davon zeichnen.
    "das war meine letzte flamewar PM an dich ."
  • 27 heisst aber auch, dass 27Pixel an Distanz pro Step übersprungen werden und alles was dazwischen ist, niemanden mehr interessiert *g*
    So far, Schattenphoenix~
    _____________________________________________________________________________
    "Who needs a stairway to heaven...
    If there is an elevator to hell... ?
    "
    - Vergessen
    "Auch ein perfektes Chaos ist etwas vollkommenes."
    - Jean Genet
  • Hat den ungünstigen effect, dass wenn die Kugel auftrifft, dass sämtliche Effekte, die an der Position der Kugel entstehen, dann automatisch auch in der Wand erscheinen *g*
    So far, Schattenphoenix~
    _____________________________________________________________________________
    "Who needs a stairway to heaven...
    If there is an elevator to hell... ?
    "
    - Vergessen
    "Auch ein perfektes Chaos ist etwas vollkommenes."
    - Jean Genet
  • Du könntest in jedem Stepevent mit ner repeat-Schleife z.B. 50 mal einen Pixel weiter gehen, statt die Variable speed zu verweden.
    Um diese ganzen Berechnungen zu sparen (weiß nicht, ob das was bringt, weil collision_line denke mal nichts anderes tut), kannst du auch sowas in der Art benutzen.
    Step-Event

    GML-Quellcode

    1. if collision_line(x,y,xprevious,yprevious,...) checkprecise()

    script checkprecise:

    GML-Quellcode

    1. var xx,yy;
    2. xx=xprevious
    3. yy=yprevious
    4. repeat(speed)
    5. {
    6. if place_free(xx,yy)
    7. {
    8. xx+=lengthdir_x(1,direction)
    9. yy+=lengthdir_y(1,direction)
    10. }
    11. else ....... was auch immer z.B. instance_destroy()
    12. }
    Alles anzeigen

    So könntest du beispielsweise die Variablen zurückgeben, an denen die Kollision stattfindet.
    Hat den ungünstigen effect, dass wenn die Kugel auftrifft, dass sämtliche Effekte, die an der Position der Kugel entstehen, dann automatisch auch in der Wand erscheinen *g*

    Dieses Problem hättest du dann gelöst ;)