winkel zwischen x und y

  • GM 8

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

  • winkel zwischen x und y

    ich benutze gerade folgenden script fürs gegner sichtfeld

    GML-Quellcode

    1. // enemy_point_view (target, view distance, <, >);
    2. var check_view_range, check_view_visible, check_view_distance;
    3. check_view_visible = !collision_line(x, y, argument0.x, argument0.y, obj_parent_floor, false, true);
    4. i= point_direction(x,y,argument0.x,argument0.y)
    5. if i <= argument2 && i >= argument3
    6. {check_view_range = true}
    7. else
    8. {check_view_range = false}
    9. check_view_distance = point_distance(x, y, argument0.x, argument0.y) <= argument1;
    10. return (check_view_visible && check_view_range && check_view_distance);
    Alles anzeigen





    dieser geht allerdings nur solange der winkel nicht über die 360/10 grad grenze geht dann muss ich ein or statt && einsetzen weiß ich möchte aber nicht mit 2 scripten arbeiten müssen weiß jemand wie man meinen script so optimiert das er mit allen winlelräumen arbeitet?
    :rage:
  • Mit einer kleinen Modifikation funktioniert auch dies:

    GML-Quellcode

    1. // enemy_check_view (target, max view distance, min view angle, max view angle);
    2. var check_view_visible, check_view_distance, view_direction, check_view_direction;
    3. check_view_visible = !collision_line(x, y, argument0.x, argument0.y, obj_parent_floor, false, true);
    4. check_view_distance = point_distance(x, y, argument0.x, argument0.y) <= argument1;
    5. view_direction = point_direction(x, y, argument0.x, argument0.y);
    6. check_view_direction = ((view_direction - argument2) * (argument3 - view_direction) * (argument3 - argument2)) > 0;
    7. return (check_view_visible && check_view_distance && check_view_direction);
    Alles anzeigen
  • Benutzer online 1

    1 Besucher