Wenn Gegner richtung Player guggt, dann..

  • GM 6

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

  • Wenn Gegner richtung Player guggt, dann..

    Hey Leute..

    ich verzweifel gerade.. das wird bestimmt wieder so ne absolute anfänger frage sein, aber gml mäßig hab ichs halt einfach nicht drauf.. >.> in der sufu au nichts gefunden

    hab folgendes problem..
    hab nen obj_gegner und obj_player.

    folgenden code im step-event hab ich schon:

    GML-Quellcode

    1. if distance_to_object(Player) < 400
    2. if (!collision_line(x,y,Player.x,Player.y,oWall,true,true))
    3. if (!collision_line(x,y,Player.x,Player.y,oWall2,true,true))
    4. if (!collision_line(x,y,Player.x,Player.y,Dach,true,true))
    5. if (!collision_line(x,y,Player.x,Player.y,Dach2,true,true))
    6. if (!collision_line(x,y,Player.x,Player.y,Kiste3,true,true))
    7. if (!collision_line(x,y,Player.x,Player.y,Kiste2,true,true))
    8. if (!collision_line(x,y,Player.x,Player.y,Kiste,true,true))
    9. if (!collision_line(x,y,Player.x,Player.y,Car1,true,true))
    10. if (!collision_line(x,y,Player.x,Player.y,Car2,true,true))
    11. if (!collision_line(x,y,Player.x,Player.y,Car3,true,true))
    12. if (!collision_line(x,y,Player.x,Player.y,Car4,true,true))
    13. if (!collision_line(x,y,Player.x,Player.y,Car5,true,true)){
    14. scr_atk_player();
    15. mp_potential_step(Player.x,Player.y,3,true);
    16. }
    Alles anzeigen


    Jetzt ist das Ding, die Gegner greifen an wenn keine Wand dazwischen ist, allerdings greifen sie auch an wenn sie mit dem Rücken zu dir stehen und dich eigentlich garnicht sehen können, hab versucht das ganze mit:

    GML-Quellcode

    1. if image_angle = point_direction(x,y,obj_Player.x,obj_Player.y)


    zu lösen. funktioniert aber nicht.

    würde das funzen, müsste aber der gegner aber die exakte direction zum obj_Player haben, das will ich aber auch nicht, denn es soll schon ein kleiner radius sein, man schaut ja nicht exakt gerade aus sondern hat ein erweitertes sichtfeld nach links und rechts.

    jemand ne idee..? ich hoffe doch..

    gruß
    shari
    Dieser Beitrag wurde bereits 1909 mal editiert, zuletzt von »Sharivari« (Morgen, 19:89)
  • Gib den Gegnern doch ein extra Objekt.
    Das halt wie eine art Lichtkegel verläuft(Taschenlampe)/ oder Dreick wie auch immer.
    Dann hättest du auch deinen Radius. Falls der Spieler nun mit diesem Objekt in Berührung kommt dreht sich der Gegner zum Spieler und fängt an auf ihn zu schießen.
  • schon probiert..

    nur ich hab ca. 50 mal das gleiche gegner objekt auf der map, und ich weiß nicht wie ich jeden kegel an die einzelnen objekte ausrichte, sprich mit image_angle und x und y
    Dieser Beitrag wurde bereits 1909 mal editiert, zuletzt von »Sharivari« (Morgen, 19:89)
  • hmm.. um nochma auf das sichtkegel ding zurückzukommen.

    gibts ne möglichkeit das der sichtkegel nicht nur einem gegner objekt im raum folgt und sich danach ausrichtet sondern nach jedem einzelnen?
    Dieser Beitrag wurde bereits 1909 mal editiert, zuletzt von »Sharivari« (Morgen, 19:89)
  • ja das geht
    im create event des gegners

    GML-Quellcode

    1. instance_create(x,y,obj_sichtkegel)

    im create event des sichtkegels

    GML-Quellcode

    1. nearest=instance_nearest(x,y,obj_gegner)

    im step event des sichtkegels:

    GML-Quellcode

    1. x=nearest.x
    2. y=nearest.y
    Meine Spiele:
    - Mission A
    - Mission B
    - The Virus 1, 2, 3
    - The Virus 4: The Excision
    - Blur melts Snow
    - Blur melts Snow: 2nd Version
    - Cave Jumper

    Hauptrojekt: Party Mania(Arbeitstitel) - große Multiplayer-Minispielsammlung
    In Planung: Planet Jumper(Nachfolger von Cave Jumper)
  • Sharivari schrieb:

    würde das funzen, müsste aber der gegner aber die exakte direction zum obj_Player haben, das will ich aber auch nicht, denn es soll schon ein kleiner radius sein, man schaut ja nicht exakt gerade aus sondern hat ein erweitertes sichtfeld nach links und rechts.


    Ja, im Grunde musst du dazu abfragen, ob die Richtung des Gegners zum Spieler, also die image_angle zwischen zwei Werten liegt.

    z.B. beträgt image_angle = 70
    Dann nimmst du zwei variablen, fügst bei der einen 30 hinzu, nimmst eine zweite und ziehst dreißig ab, sodass sie
    dirA = 100;
    dirB = 40;
    haben und kannst dementsprechend überprüfen ob die richtung zum spieler zwischen diesen beiden werten liegt.

    Klingt etwas einfacher als es ist, da du aufpassen musst das du auch über 359 und unter 0 beim addieren/subrahieren kommen kannst bei den Gradanzahlen und musst dementsprechend das ganze Abfangen.


    Zum 2ten Punkt empfehle ich dir dringend einmal dir das Kapitel über "Parents" durchzulesen.
    Und zwar kannst du dir die if abfragen sparen und mit einer einzigen ersetzen.
    Alle deine Cars, Kiste, Dach und oWall haben dann z.B. das objKollision als Parent und beim Abfragen wird lediglich geprüft, ob eine Kollision mit dem objKollsion stattfindet. Dringende Empfehlung :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Dur'Rean ()

  • @ Sebastion

    perfekt.. die funktion hatte ich ganz vergessen
    ich danke dir, von ganzem herzen :D


    @ Dur'rean

    danke, das hätt ich auch iwie hinbekommen, aber so ists um einiges einfach
    das kapitel mit den parents werd ich mir mal durchlesen, wie gesagt.. in gml bin ich absoluter anfänger, obwohl ich schon ziemlich lang mitm gm arbeite =)

    aber alles was ich mir so vorstelle krieg ich irgendwie immer hin..
    danke an alle noma :)

    gruß shari
    Dieser Beitrag wurde bereits 1909 mal editiert, zuletzt von »Sharivari« (Morgen, 19:89)
  • Benutzer online 3

    3 Besucher