Metal Slug Einheiten Ai (oder Ki)

  • GM 6

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

  • Metal Slug Einheiten Ai (oder Ki)

    Heyja ;)
    Ich habe mal so ne kleine frag und zwar habe ich n paar Metal Slug Soldaten, habe eine Halbwegs funktionierende Ai für all möglichen kleinscheiss gemacht... jetzt suche ich blos noch eine Ai (oder auch Ki, bin mir nicht sicher was ich suche *g* :rolleyes: (((gibts da eig. nen unterschied? - egal))) ) :deal:
    ...
    Also meine... Typen springen aus nem Heli, Seilen sich ab, und sitzen in ner rumgammel position,... jetzt sprigen da 5 typen aus dem Heli und sitzen leider alle an der gleichen stelle ( :shifty: )... nähere ich mich, verschiesen die alles was sie haben... sieht nur verdammt scheise aus.. weil eben alle an der gleichen stelle sitzen... 8| jetzt bin ich am überlegen ob diese Typen sich nicht vlt. eventuel ein wenig vom fleck bewegen könnten...
    ...
    So...
    wie ich mir das gedacht habe:...
    (jetzt kommt einfach mal alles was ich in das obj_soldier reingehaue)

    Quellcode

    1. Create:
    2. image_speed = 0.25
    3. dead = 0
    4. ropedown = 0
    5. shoot = 0
    6. walk = 0
    7. right = 0
    8. left = 0


    Quellcode

    1. Step:
    2. //if
    3. //distance_to_object(obj_soldier) > 100 &&
    4. //
    5. if
    6. sprite_index = spr_soldier_ropedown && image_index = 24 - image_speed then
    7. {
    8. sprite_index = spr_soldier_shoot
    9. ropedown = 1
    10. }
    11. //
    12. if
    13. ropedown = 1
    14. {
    15. if
    16. place_free(x-2,y)
    17. left = 1
    18. if
    19. !place_free(x-2,y)
    20. left = 0
    21. if
    22. place_free(x+2,y)
    23. right = 1
    24. if
    25. !place_free(x+2,y)
    26. right = 0
    27. if
    28. left = 1
    29. hspeed = -2
    30. if
    31. right = 1
    32. hspeed = 2
    33. if
    34. left = 1 && right = 1
    35. hspeed = 0
    36. if
    37. left = 1
    38. image_xscale = -1
    39. if
    40. right = 1
    41. image_xscale =1
    42. if
    43. walk = 1 && left = 1
    44. sprite_index = spr_soldier_walk
    45. if
    46. walk = 1 && right = 1
    47. sprite_index = spr_soldier_walk
    48. if
    49. right = 1 && left = 1
    50. {
    51. image_index = 0
    52. sprite_index = spr_soldier_shoot
    53. }
    54. if
    55. right = 0 && left = 0
    56. {
    57. image_index = 0
    58. sprite_index = spr_soldier_shoot
    59. }
    60. }
    Alles anzeigen

    (die ersten 3 zeilen sind noch gewusel und nen kleiner anfang ;))
    ....
    sooo
    ich hoffe (ne spas ich weiss :P ;) ) das ihr bis hierhin mitgekommen seit...
    ...
    (mein "Gehirn": *brusel)
    ...
    hat vlt. jetzt jmd. ne Idee wie ich etwas, bewegung, in die Sache bringen? ;(
    vielen dank schon mal fürs durchlesen des Textes :P
    lg
    BigBadBoy ;)

    EDIT:
    hab n klenes Pic angehängt.. damit ihr euch in etwa vorstellen könnt wie ich mir das so denke...
    Bilder
    • Hide and Seek.png

      36,21 kB, 400×400, 242 mal angesehen
    Yes:evil:! It's me:whistling:'

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

  • Frag doch einfach ab, ob sich an der Position der Eiheit eine weitere befindet oder eine Kollision mit so einer stattfindet.
    Wenn ja, dann soll er sich zufällig oder sonst irgendwie nach links oder rechts bewegen.

    Oder aber du lässt sie, nach dem Abseilen einfach automatisch in eine Richtung zu einem zufälligen Punkt bewegen.
    "das war meine letzte flamewar PM an dich ."
  • 8|
    ganz erlich so weit war ich auch schon :P
    Aber... öhm... kannst du mir vlt ne anrgeung oder sowas geben? also... n kleines script oder sowas? Ich weiss nämlich nicht wie ich das schreiben soll ?(
    Yes:evil:! It's me:whistling:'
  • Anregung:

    GML-Quellcode

    1. if collision_rectangle(...)&&check=0
    2. {
    3. targetx=x+random(50)
    4. check=1
    5. }
    6. go to targetx
    7. if x=targetx then check=0

    Kannst du damit was anfangen?
    "das war meine letzte flamewar PM an dich ."
  • ^^ '
    hmm
    nicht wirklich... a. hab ich ka was das machen soll & b. wie soll ich das im oberem script einbauen... :X?
    P.S.
    Windapple hast du vlt. eine... äöahm... Lösende Lösung?
    Yes:evil:! It's me:whistling:'
  • Du möchtest, dass die EInheiten nicht übereinander liegen, oder?

    Ok, dann versuch ichs, zu erklären:
    Den Code führst du im step-event der Einheiten aus
    Du musst erst checken, ob sich an der Position der Einheit eine andere Einheit befindet,
    dafür habe ich collision_rectangle genommen:
    collision_rectangle(x1,y1,x2,y2,obj,prec,notme)
    Also würde etwa so aussehen:

    GML-Quellcode

    1. if collision_rectangle(x,y,x+sprite_width,y+sprite_height,obj_soldier,0,1)



    Anschliessend setze ich eine Variable namens targetx auf eine begrenzt zufällige Zahl.
    Diese stellt das aktuelle Ziel der Einheit dar, wohin es sich bewegen soll.
    In dem Fall nur targetx, also auf horizontaler Ebene.

    Irgendwo im Code musst du ein Bewegungscript definieren, welches sich immer zum targetx bewegt:

    GML-Quellcode

    1. if x<targetx x+=1
    2. else if x>targetx x-=1

    so in der Art, das is deine Sache, wie du das mit der Bewegung lösen möchtest.


    Das check ist schlicht eine Variable, die verhindert, dass targetx in jedem step geändert wird und die Abfrage erst wieder aktiviert wird, wenn x=targetx ist.

    Ich hoffe, ich konnte dir das einigermassen erklären,
    ich bin leider nicht auf deinen vorigen Code eingegangen,
    weil ich dir nur das Prinzip klarmachen möchte.
    "das war meine letzte flamewar PM an dich ."
  • das is eine variable, die ich selbst definiert hab.

    sagen wir du definierst targetx als variable, die jeweils den aktuellen zielpunkt angibt, an den deine einheit hingehen soll.
    somit könntest du zb etwa sagen: targetx=player.x und er würde sich immer horizontal zum player bewegen.
    verstanden?
    "das war meine letzte flamewar PM an dich ."
  • Hmm...
    ganz erlich =D
    das ist alles nicht das was ich suche...
    vlt. habe ich das auch nicht wirklich genug erklärt...
    Also...
    Aus dem klenem Heli sprigen nacheinander 5 Soldaten raus... und seilen sich ab... nach der animation.... des Abseilens (AHAHAHAHA XDDD) (*sorry :P)... 8o ... stehen die Typen (bei mir sitzen sie in ner geduckten halteung...) und chillen vor sich hin... komm ich jetzt diesen typen zu nahe... sollen sie anfagen zu schiesen... (sähe aber 100% sche*sse aus weil die eben alle auf einem knubbel sitzen... so... wie könnte ich das jetzt also.. einiger masen gut aussehen lassen (und auch umsetzen) das die typen sich ein wenig verteilen...
    ;( hilfe :P
    Yes:evil:! It's me:whistling:'
  • ok, is das "if ropedown" 1, wenn er sich runterseilt?

    was is dann der ganze code darunter?

    ich kapier nicht ganz, wieso der während dem abseilen die positionen x+2 und so abfragt, sollte das nicht danach geschehen?

    können deine gegner überhaupt schon laufen?

    dann mach doch das, was ich dir gesagt hab.
    definier eine variable als targetx oder sonst was:

    GML-Quellcode

    1. Create:
    2. targetx=x
    3. Step:
    4. if targetx>x {hspeed=2 sprite_index = spr_soldier_walk}
    5. else if targetx<x { hspeed=-2 sprite_index = spr_soldier_walk}
    6. else {hspeed=0 sprite_index = spr_soldier_stand??}
    7. //if
    8. //distance_to_object(obj_soldier) > 100 &&
    9. //
    10. if
    11. sprite_index = spr_soldier_ropedown && image_index = 24 - image_speed then
    12. {
    13. sprite_index = spr_soldier_shoot
    14. ropedown = 1
    15. }
    16. //
    17. if
    18. ropedown = 1
    19. {
    20. targetx=x+random(50)-25
    21. if
    22. hspeed<0
    23. image_xscale = -1
    24. else
    25. image_xscale =1
    26. }
    Alles anzeigen


    lad doch mal deine gmk runter, dann kann man dir vl "genauer" helfen...
    "das war meine letzte flamewar PM an dich ."

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von blubberblub ()

  • Ja ich lade ein gm6 HOCH... ;)
    (dauert aber n bisl... einen augenblick pls)...
    EDIT:
    ok
    alles die es interesiert... :D
    hier mein abgespecktes example
    ...
    ;)
    Dateien
    Yes:evil:! It's me:whistling:'

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

  • Wie wär es damit?

    (Der Heli fliegt nach jedem abgeseilten Soldaten ein bischen weiter. Somit stehen nicht alle auf einem Fleck)

    EDIT: Noch eine zweite Lösung (musst dort jedoch den Soldaten eine Laufanimation geben)
    Dateien
    • dein problem.rar

      (176,42 kB, 147 mal heruntergeladen, zuletzt: )

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