Kein Halt vor Collision

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

  • Kein Halt vor Collision

    [
    Spoiler anzeigen
    if Source.d_z >=0.10 && Source.d_y <=0.10 && Source.d_y >=-0.10
    {vspeed=-v_speed image_xscale=1 image_angle=90} //links
    if Source.d_z <=-0.10 && Source.d_y <=0.10 && Source.d_y >=-0.10
    {vspeed=v_speed image_xscale=1 image_angle=270} //rechts
    if Source.d_y >=0.10 && Source.d_z <= 0.10 && Source.d_z>=-0.10
    {hspeed=v_speed image_xscale=1 image_angle=0} //unten
    if Source.d_y <=-0.10 && Source.d_z <= 0.10 && Source.d_z>=-0.10
    {hspeed=-v_speed image_xscale=-1 image_angle=0} //oben

    if Source.d_z <= 0.10 && Source.d_z>=-0.10 {vspeed=0}
    if Source.d_y <= 0.10 && Source.d_y>=-0.10 {hspeed=0}

    if (sign(real(vspeed))=1 && y+sprite_height/2>=room_height)
    //|| collision_line(x+sprite_width/2,y-sprite_height/2,x+sprite_width/2,y+sprite_height/2,obj_col,0,self)!=-4
    {vspeed=0 } //rechts
    if (sign(real(vspeed))=-1 && y-sprite_height/2<=0)
    //|| collision_line(x-sprite_width/2,y-sprite_height/2,x,sprite_height,obj_col,0,self)!=-4
    {vspeed=0 } //links
    if (sign(real(hspeed))=1 && x+sprite_width/2>=room_width )
    || (collision_line(x+sprite_width/2,y+sprite_height/2,x-sprite_width/2,y+sprite_height/2,obj_col,0,self)!=-4)
    {hspeed=0 } //unten (!*!*!)
    if (sign(real(hspeed))=-1 && x-sprite_width/2<=0 )
    //|| collision_line(x-sprite_width/2,y-sprite_height/2,sprite_width,y,obj_col,0,self)!=-4
    {hspeed=0 } //oben


    Hey, irgendwie stoppt mein Object nicht, wenn es sich bewegt und auf ein Objekt ("obj_col")
    trifft, ich benutze sonst nie h&v_speed dachte mir aber das es so eigentlich funktionieren würde 0.0?
    (Es geht hier gerade nur um die Kollisionsabfrage "unten" markiert mit (!*!*!) (v_speed ist die speedvar, origin in der mitte des sprites, Source.d_y & x ist nur der device y&x input vom android))

    Danke für die Hilfe, mfg Nike
  • Darf ich fragen wann collision_line() -4 zurück gibt und wieso du mit collision_line über die Diagonale deines sprites arbeitest statt direkt nach einer Kollision zu fragen?

    Der Code sieht igendwie ziemlich unleserlich und unnötig kompliziert aus. Wenn du mit Worten beschreibst was du prüfen willst, können wir vielleicht einen kürzeren Code dazu vorschlagen.

    Um ein Objekt zu stoppen, wenn es obj_col berührt würde ich folgenden Code schreiben:

    GML-Quellcode

    1. if place_meeting(x,y,obj_col)
    2. {
    3. speed=0;
    4. }