Geger soll den Ball erkennen

  • Geger soll den Ball erkennen

    Tut mir leid wenn es das Thema schon gibt. aber ich habe nichts gefunden. Ich mache zurzeit ein Spiel, das ähnlich aufgebaut ist wie ein Ping-Pong. Die Betonung liegt hier auf ähnlich.
    In dem Spiel geht es um eine Energiekugel die man abwehren muss, denn sonst nimmt man Schaden. Auch der Gegner kann diesem Ball zurückschleudern. Das Ziel ist es den Gegner damit so oft zu treffen wie nur möglich. Ja das ganze erinnert einen an Link vs Ganondorf aus Zelda, die Idee habe ich ja auch daher.
    Ich habe vorher bereits ein Spiel dergleichen gemacht, allerdings konnte ich zu dieser Zeit noch kein GML und habe D&D benutzt. Das Spiel hatte eine unglaublich lange Ladezeit usw...

    Ich fange gerade mit der ersten KI an, nur kommt dann auch prompt das Problem: Der Gegner soll erkennen wenn der Ball auf ihn zufliegt. Ich weiß es würde mit

    GML-Quellcode

    1. if obj_ball.y = y
    im Stepevent gehen. Nur muss sich dann auch wirklich die Höhe des Balls genau auf der Höhe des Gegners befinden. Da der Ball aber keinen Pixel groß ist, würde er ihn auch wenn er nicht genau die selbe Höhe hat treffen.

    Nun wie prüfe ich ob der Ball auf ihn zufliegt ohne 10-Fach zu prüfen ob der Ball vom Gegner aus da ist ob er vom Gegner aus dort ist...?

    Die Community die ich einst liebte, ist mehr und mehr zu einer Plattform für kleine Kinder, selbstgerechte Gutmenschen und Heuchler verfallen.
    Viele Jahre habe ich ihr beim Sterben zugesehen aber mittlerweile habe ich alle Hoffnung aufgegeben.

    Golden Sun Camera Sample
    Mechferno Alpha 1.14
    Fruge Beta 3.01
  • REchne einfach dide differenz aus...

    GML-Quellcode

    1. differenz=|object_ball.y - y| //Ich weiß nciht ob man in GML diese Balken benutz kann ;)
    2. //Wenn nciht, dann Balekn weg un dfolgendes dazu:
    3. if differenz<0
    4. differenz=differenz*-1
    5. if differen<"Wiegroßdaszuterffendeobjectauchimmais"
    6. AUSWIEHCEN!!!


    EDIT: hab n "]" bei [gml] vergessen^^ und n + anstat nem * gemacht

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

  • wenn es so ist, dass ein spieler z.B. oben am bildschirm der andere unten ist, liest du einfach die vertikale geschwindigkeit des balles aus...
    (Gegner ist oben)

    GML-Quellcode

    1. if(obj_ball.vspeed<0)
    2. {
    3. tempx=ball.x-x
    4. if(temp>2){x+=3}
    5. if(temp<-2){x-=3}
    6. }

    ich hoffe das hilft
    int (*x(*x(int))[5])(int*);
    Confused? Yes, it's C!