player detection

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

  • player detection

    hallo

    also ich wollte eine player detection machen aber sie funktioniert nicht einwandfrei...also

    in

    obj_player
    create event

    GML-Quellcode

    1. global.gesehen = 0;


    obj_player
    step event

    GML-Quellcode

    1. if place_meeting(x,y,obj_rauchwand) // wenn der player hinter der wand ist wird er nicht gesehen
    2. {
    3. global.gesehen = 0;
    4. }
    5. if global.gesehen == 1
    6. {
    7. with obj_enemi
    8. {
    9. instance_create(x,y-50,obj_rufzeichen) // ist überflüssig wollte ich nur zum testen machen
    10. }
    11. }
    Alles anzeigen



    dann im enemy obj


    obj_enemy
    create event

    GML-Quellcode

    1. global.facing ="right";


    obj_enemy
    step event

    GML-Quellcode

    1. if (hspeed > 0)
    2. {
    3. sprite_index=spr_enemy_right;
    4. global.facing="right";
    5. }
    6. if (hspeed < 0)
    7. sprite_index=spr_enemy_left;
    8. global.facing="left";
    9. if collision_line(x,y,x-100,y,obj_player,true,true)&& (global.gesehen == 0) && (global.facing == "left") // überprüfung ob der player die linie berührt und er nach links schaut
    10. {
    11. global.gesehen = 1;
    12. }
    13. if collision_line(x,y,x+100,y,obj_player,true,true)&& (global.gesehen == 0) && (global.facing == "right") // selbe nur mit rechts
    14. {
    15. global.gesehen = 1;
    16. }
    Alles anzeigen



    obj_enemy
    draw_event

    GML-Quellcode

    1. if (global.facing == "left")
    2. {
    3. draw_set_color(c_red)
    4. draw_line(x,y,x-100,y) // nur um zu testen und es zu sehn ob er eine linie zeichnet wenn er nach links schaut und geht
    5. }
    6. else
    7. {
    8. draw_set_color(c_red)
    9. draw_line(x,y,x+100,y) // dasselbe nur mit rechts
    10. }




    also links zeichnet er die linie und die detection funktioniert auch ..aber rechts nicht....weder ne linie wird gezeichnet noch die detection funktioniert
  • ich habs jetzt teilweise hinbekommen er detect mich aber wenn er mich detect geht es ganze zeit auf false und true ganz schnell hin und her.....habs jetzt so gemacht

    obj_enemy
    step event

    GML-Quellcode

    1. if (hspeed > 0)
    2. {
    3. sprite_index=spr_enemy_right;
    4. global.facing="right";
    5. }else
    6. sprite_index=spr_enemy_left;
    7. global.facing="left";
    8. seenright = collision_line(x,y,x+300,y,obj_player,false,false);
    9. seenleft= collision_line(x,y,x-300,y,obj_player,false,false);
    10. if instance_exists(seenright){
    11. if (facing == "right") && (global.gesehen == 0) {
    12. global.gesehen = 1;
    13. }else{
    14. global.gesehen = 0;}
    15. }
    16. if instance_exists(seenleft){
    17. if (facing == "left") && (global.gesehen == 0) {
    18. global.gesehen = 1;
    19. }else{
    20. global.gesehen = 0;}
    21. }
    Alles anzeigen


    und im obj-player step event das

    GML-Quellcode

    1. if place_meeting(x,y,obj_rauchwand) // wenn der player hinter der wand ist wird er nicht gesehen
    2. {
    3. global.gesehen = 0;
    4. }
    5. if global.gesehen == 1
    6. {
    7. with obj_enemi
    8. {
    9. instance_create(x,y-50,obj_rufzeichen) // ist überflüssig wollte ich nur zum testen machen
    10. //kommt noch code hinzu zb schie9en verfolgen usw...
    11. }
    12. }
    Alles anzeigen



    bitte kann mir jemand helfen und sagen was ich falsch gemacht habe und wie ichs besser machen kann
  • Das Selbe wie in deinem anderen Thread,

    Da du global.gesehen durch die else Schleifen immer wieder zurücksetzt solltest du zumindest eine else if Schleife einfügen.
    Denn wenn er rechts gesehen wird, wird er links nicht gesehen und somit global.gesehen = 0

    Hoffe du verstehst was ich meine.

    Gruß Bartl
    Drei Arten von Männern versagen im Verstehen der Frauen:
    junge Männer, Männer mittleren Alters und alte Männer.

    irisches Sprichwort