Create_0.gml 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. //运行参数
  2. x_spd = 0;
  3. y_spd = 0;
  4. x_spd_kb = 0;
  5. y_spd_kb = 0;
  6. facing_x = 1;
  7. facing_y = 1;
  8. hitstun_timer = 0;
  9. flash_timer = 0;
  10. is_dead = false;
  11. state = undefined;
  12. hitbox = noone;
  13. //基础属性
  14. credit = 0;
  15. damage = 1;
  16. hp = 1;
  17. kb_factor = 1.0;
  18. hitstun_duration = 10;
  19. //视觉
  20. image_speed = 0; //禁用内置参数
  21. animation_spd = 0.25;
  22. corpse_sprite = sprite_index; //临时方案,最终被美术素材替代
  23. flash_duration = 6;
  24. u_flash_alpha = shader_get_uniform(sh_flash, "f_alpha");
  25. get_hit_pe = function(_info)
  26. {
  27. var _dir = point_direction(0, 0, _info.kbFactorX, -abs(_info.kbFactorY));
  28. repeat(6)
  29. {
  30. var _pe = icl(oHitEnemyEffect);
  31. _pe.dir = random_range(_dir - 45, _dir + 45);
  32. _pe.x_spd = lengthdir_x(_pe.spd, _pe.dir);
  33. _pe.y_spd = lengthdir_y(_pe.spd, _pe.dir);
  34. }
  35. };
  36. death_pe = get_hit_pe; //临时方案
  37. /*
  38. get_hit_pe_alt = function()
  39. {
  40. var _struct = particle_get_info(peBladeHitHazard);
  41. var _part_type = _struct.emitters[0].parttype.ind;
  42. var _dir = point_direction(0, 0, _info.kbFactorX, -abs(_info.kbFactorY));
  43. part_type_direction(_part_type, _dir - 45, _dir + 45, 0, 5);
  44. var _part = part_system_create_layer("Effect", false, peBladeHitHazard);
  45. part_system_position(_part, x, y);
  46. };
  47. */
  48. //交互逻辑
  49. corpse_doll = true;
  50. has_ink = true;
  51. apply_collision = true;
  52. invincible = false;
  53. enemy_ai = function(){};
  54. death_callback = undefined;
  55. get_hit = function(_info)
  56. {
  57. get_hit_pe(_info);
  58. if has_ink
  59. player_add_INK(1);
  60. flash_timer = flash_duration;
  61. hitstun_timer = hitstun_duration;
  62. x_spd_kb = _info.kbFactorX * kb_factor;
  63. y_spd_kb = _info.kbFactorY * kb_factor;
  64. if !invincible
  65. hp -= _info.damage;
  66. if hp <= 0
  67. {
  68. is_dead = true;
  69. enemy_death();
  70. }
  71. };