Bestimmung des Kollisions Punkt

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

  • Bestimmung des Kollisions Punkt

    Hab die SuFu benutzt, aber nichts gefunden. Also ich bräuchte eine Kollisions Prüfung, die nicht nur das Objekt das sie trifft (=> collision_line())sondern den Punkt returnt an dem sie das Objekt trifft. Hätte da schon eine Idee, die ein ungefähres Ergebis liefern würde, das aber reichen würde =>in der Wand kann sich sowieso nichts befinden. Damit ich weiß, wann ein Schuss auf eine Wand trifft (ein Sandstrahler um genau zu sein, der alles auf seinen Weg zur nächsten Wand platt macht...)
    trompadon.bplaced.net/media/verdeutlichung.jpg
    Verdammt, ich komm einfach nicht drauf... :headtouch:Wand">
    PULSE

    Zweispieler [||||||||||]
    Einspieler [||||||||||]

    [Die Entgrater ist auf Eis gelegt]

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

  • Du könntest über eine for-Schleife einige Punkte der Linie überprüfen...

    GML-Quellcode

    1. if collision_line(x,y,othx,othy,wand,1,0)
    2. {
    3. for(i=0;i<distance_to_point(othx,othy);i+=8)
    4. {
    5. if collision_point(x+lengthdir_x(10*i,point_direction(x,y,othx,othy)),y+lengthdir_y(10*i,point_direction(x,y,othx,othy)),wand,1,0)
    6. {
    7. col_x = x+lengthdir_x(10*i,point_direction(x,y,othx,othy));
    8. col_y = y+lengthdir_y(10*i,point_direction(x,y,othx,othy));
    9. exit;
    10. }
    11. }
    12. }
    Alles anzeigen

    "Is this one sloshing?"
    Four words you don't want to hear when you pick up a coffin...
  • Das würde nicht funken (ja schon), aber die direction muss gleich bleiben. Also ich schieße mit der Waffe und auf dieser Line soll geprüft werden ob sich ein Wand obj befindet, wenn ja (in entfernung von ca. 300) soll die zweite collision_line die mit with (obj_wand) funkt nur bis zu dem punkt gehen (wenn es ihn gibt) auf den es auf die wand trifft..
    Ps: wofür steht eigentlich othx und y, für other.x kann es nicht stehen, da der sandstrahler partikel verschießt => es gibt keine kollision!!
    PULSE

    Zweispieler [||||||||||]
    Einspieler [||||||||||]

    [Die Entgrater ist auf Eis gelegt]
  • Du musst ja vorher schon einen Code gehabt haben, der mit collision_line gearbeitet hat.
    collision_line(x,y,othx,othy, wand,1,0)

    (othx,othy) -> Endpunkte der Linie

    Und dieser Code müsste klappen. Durch das lengthdir wird die Linie zwischen den beiden Punkten abgegangen.

    "Is this one sloshing?"
    Four words you don't want to hear when you pick up a coffin...
  • Achso, ist klar. Werde das mal testen...
    nee, das klappt nicht, das ergibt so wie das was ich vorher getestet habe immer ein von der direction der schussline abweichendes ergebnis...
    PULSE

    Zweispieler [||||||||||]
    Einspieler [||||||||||]

    [Die Entgrater ist auf Eis gelegt]

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

  • Vielen Dank, werd ich mal testen...
    achso, das war mit otherx gemeint, jetzt ist mir das klar. Das ganze ist zwar nicht 100% genau, aber schluckt auch keine fps :D
    Mann, bin ich dämlich. Das ist doch sowas von logisch und ich versteh das zuerst sowas von falsch. (Was lernen wir daraus, zuerst den ganzen Code verstehen und dann anfangen zu mekern [wie schreibt man das eigentlich??]. :whistling:
    PULSE

    Zweispieler [||||||||||]
    Einspieler [||||||||||]

    [Die Entgrater ist auf Eis gelegt]

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

  • Ich glaube "meckern"...

    Zur Genauigkeit: Du kannst die Zahl in der For-Schleife ändern. Umso kleiner (momentan, glaube ich, 8 , desto genauer wird das Ergebnis.

    "Is this one sloshing?"
    Four words you don't want to hear when you pick up a coffin...
  • Benutzer online 7

    7 Besucher