ein schiff soll an wänden wegbewegen

  • GM 8

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

  • ein schiff soll an wänden wegbewegen

    wenn ich image_angle in 8.1 für denn schiff benutzte bewegt der sich im kreis um mich aber kann an solide wände klatschen
    welche einstellung ist gut damit es vom wänden besser abprallt oder es nicht stecken bleibt
  • da gibt es keine "Einstellung"

    das musst du dir schon selber Coden
    verhinder einfach das sich das object in ein anderes hineindreht.
    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
  • Quellcode

    1. if place_free(x+hspeed,y) == false // Kollisionserkennung Links-Rechts
    2. {
    3. if hspeed > 0
    4. move_contact_solid(0,-1)
    5. if hspeed < 0
    6. move_contact_solid(180,-1)
    7. hspeed = -hspeed
    8. }
    9. vspeed += 1 // Grafitation
    10. if place_free(x,y+vspeed) == false // Kollisionserkennung Oben-Unten
    11. {
    12. if vspeed > 0
    13. move_contact_solid(270,-1)
    14. if vspeed < 0
    15. move_contact_solid(90,-1)
    16. vspeed = 0
    17. }
    18. if place_free(x+hspeed,y+vspeed) == false // Nicht an Ecken hängen bleiben
    19. hspeed = 0
    Alles anzeigen

    ist das nicht das richtige hin und her zu segeln
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Dein code klappt leider nicht so ganz mein schiff rotiert wie ein wirbelwind bei collision event mit wand und
    bei step event gehen die ab wie eine rakete.

    das ist mein step event code für meine gegnerischen schiffe :


    friction = 0.2;
    image_angle = direction;

    //gegner verfolgt dem spieler //

    if instance_exists (spieler)
    if distance_to_object (spieler) < 200 //
    { //
    move_towards_point (spieler.x,spieler.y,1)
    direction +=90+(360)

    }

    if hp > 0
    break;
    if hp < 1
    instance_destroy ()
    instance_create (x,y,shipexp)
    instance_create (x,y,coin)
    sound_play (exp2)

    UND

    if distance_to_object (spieler) < 200
    break;
    if not distance_to_object (spieler) < 200
    alarm [0] = 100
  • versuchs damit im End Step event:


    x = xprevious;y = yprevious
    var xmot, ymot, limit = 50;
    for (i=0; i<limit; i+=1)
    {
    xmot=x+lengthdir_x(speed,direction+i)
    ymot=y+lengthdir_y(speed,direction+i)
    if place_free(xmot,ymot){x = xmot;y = ymot;exit}
    xmot=x+lengthdir_x(speed,direction-i)
    ymot=y+lengthdir_y(speed,direction-i)
    if place_free(xmot, ymot){x = xmot;y = ymot;exit}
    }
  • dann:

    GML-Quellcode

    1. x = xprevious;y = yprevious;
    2. var xmot, ymot, limit;
    3. limit =50;
    4. for (i=0; i<limit; i+=1)
    5. {
    6. xmot=x+lengthdir_x(speed,direction+i)
    7. ymot=y+lengthdir_y(speed,direction+i)
    8. if place_free(xmot,ymot){x = xmot;y = ymot;exit}
    9. xmot=x+lengthdir_x(speed,direction-i)
    10. ymot=y+lengthdir_y(speed,direction-i)
    11. if place_free(xmot, ymot){x = xmot;y = ymot;exit}
    12. }
    Alles anzeigen


    Der Algorithmus bewirkt dass allen soliden Objekten ausgewichen wird,
    "limit" ist hierbei der Winkel der maximal möglichen Drehung.

    die erste Variante ist für Game Maker: Studio ausgelegt.

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

  • ich hatte mal ein Spiel mit dem selben problem.
    Vielleicht finde ich es ja wieder.
    moment.....

    Edit:
    habs wiedergefunden und dann ein Example gemacht.
    Dateien
    • wandkollison.gmk

      (10,51 kB, 228 mal heruntergeladen, zuletzt: )
    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

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

  • husi012 schrieb:

    Quellcode

    1. if place_free(x+hspeed,y) == false // Kollisionserkennung Links-Rechts
    2. {
    3. if hspeed > 0
    4. move_contact_solid(0,-1)
    5. if hspeed < 0
    6. move_contact_solid(180,-1)
    7. hspeed = -hspeed
    8. }
    9. vspeed += 1 // Grafitation
    10. if place_free(x,y+vspeed) == false // Kollisionserkennung Oben-Unten
    11. {
    12. if vspeed > 0
    13. move_contact_solid(270,-1)
    14. if vspeed < 0
    15. move_contact_solid(90,-1)
    16. vspeed = 0
    17. }
    18. if place_free(x+hspeed,y+vspeed) == false // Nicht an Ecken hängen bleiben
    19. hspeed = 0
    Alles anzeigen

    ist das nicht das richtige hin und her zu segeln

    sorry da musste noch was vor:

    Quellcode

    1. speed=max(4,speed)
    2. if place_free(x+hspeed,y) == false // Kollisionserkennung Links-Rechts
    3. {
    4. if hspeed > 0
    5. move_contact_solid(0,-1)
    6. if hspeed < 0
    7. move_contact_solid(180,-1)
    8. hspeed = -hspeed
    9. }
    10. vspeed += 1 // Grafitation
    11. if place_free(x,y+vspeed) == false // Kollisionserkennung Oben-Unten
    12. {
    13. if vspeed > 0
    14. move_contact_solid(270,-1)
    15. if vspeed < 0
    16. move_contact_solid(90,-1)
    17. vspeed = 0
    18. }
    19. if place_free(x+hspeed,y+vspeed) == false // Nicht an Ecken hängen bleiben
    20. hspeed = 0
    Alles anzeigen
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe