FlyingTrackAI.gml 972 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. function enemy_flying_track_ai()
  2. {
  3. var _target = noone;
  4. if instance_exists(global.player)
  5. {
  6. var _blocker = collision_line(x, y,
  7. global.player.x, global.player.y - 1, oParentObstacle, false, true);
  8. if distance_to_object(global.player) < range && _blocker == noone
  9. _target = global.player;
  10. }
  11. if _target != noone
  12. {
  13. var _dir = point_direction(x, y, _target.x, _target.y - 128);
  14. x_spd += lengthdir_x(acc, _dir);
  15. y_spd += lengthdir_y(acc, _dir);
  16. facing_x = sign(_target.x - x);
  17. set_sprite(sEnemyFlyingTrack);
  18. }
  19. else
  20. {
  21. if y_spd = 0
  22. {
  23. x_spd = 0;
  24. set_sprite(sEnemyFlyingTrackIdle);
  25. }
  26. x_spd = lerp(x_spd, 0, 0.01);
  27. y_spd += acc;
  28. }
  29. var _current_spd = point_distance(0, 0, x_spd, y_spd);
  30. if _current_spd > max_spd
  31. {
  32. var _scale = max_spd / _current_spd;
  33. x_spd *= _scale;
  34. y_spd *= _scale;
  35. }
  36. image_xscale = facing_x;
  37. }