EnemyBulletLaucher.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. using System;
  2. using GameWorld;
  3. using LitJson;
  4. using UnityEngine;
  5. public class EnemyBulletLaucher : BaseBehaviour
  6. {
  7. private bool isOnGround
  8. {
  9. get
  10. {
  11. return Physics2D.Raycast(base.transform.position, -Vector2.up, 0.36f, LayerManager.GroundMask).collider != null;
  12. }
  13. }
  14. private void OnEnable()
  15. {
  16. this.player = null;
  17. this.beAtked = false;
  18. }
  19. private void Start()
  20. {
  21. }
  22. private void OnDisable()
  23. {
  24. if (this.disablePlayEffect != -1)
  25. {
  26. R.Effect.Generate(this.disablePlayEffect, null, base.transform.position, default(Vector3), default(Vector3), true);
  27. }
  28. }
  29. private void Update()
  30. {
  31. if (this.isOnGround && this.groundEffect != -1)
  32. {
  33. R.Effect.Generate(this.groundEffect, null, base.transform.position + new Vector3(0f, -0.3f, 0f), default(Vector3), default(Vector3), true);
  34. EffectController.TerminateEffect(base.gameObject);
  35. }
  36. }
  37. private void OnTriggerEnter2D(Collider2D other)
  38. {
  39. if (other.name == "PlayerHurtBox")
  40. {
  41. PlayerHurtAtkEventArgs args = new PlayerHurtAtkEventArgs(R.Player.GameObject, base.gameObject, this.attacker.gameObject, this.damage, Incrementor.GetNextId(), this.atkData, false);
  42. EventManager.PostEvent<Transform, PlayerHurtAtkEventArgs>("PlayerHurtAtk", base.transform, args);
  43. if (!this.beAtked)
  44. {
  45. this.player = R.Player.Transform;
  46. }
  47. this.HitBullet();
  48. }
  49. }
  50. public void HitBullet()
  51. {
  52. if (this.beAtked && this.hitEffect != -1)
  53. {
  54. R.Effect.Generate(this.hitEffect, null, base.transform.position, default(Vector3), default(Vector3), true);
  55. R.Effect.Generate(49, null, base.transform.position, default(Vector3), default(Vector3), true);
  56. }
  57. if (this.player && this.hitEffect != -1)
  58. {
  59. R.Effect.Generate(this.hitEffect, null, new Vector3((base.transform.position.x + this.player.position.x) / 2f, base.transform.position.y, base.transform.position.z), default(Vector3), default(Vector3), true);
  60. }
  61. EffectController.TerminateEffect(base.gameObject);
  62. }
  63. public void SetVelocity(float speed, float angle)
  64. {
  65. base.GetComponent<Rigidbody2D>().velocity = new Vector2(speed * Mathf.Sin(angle * 0.0174532924f), speed * Mathf.Cos(angle * 0.0174532924f));
  66. base.transform.rotation = Quaternion.Euler(new Vector3(0f, 0f, -angle));
  67. }
  68. public void SetAtkData(JsonData data)
  69. {
  70. this.atkData = data;
  71. }
  72. [SerializeField]
  73. public float speed;
  74. [SerializeField]
  75. public float angle;
  76. [SerializeField]
  77. private bool canThrough;
  78. [SerializeField]
  79. private int hitEffect = -1;
  80. [SerializeField]
  81. private int groundEffect = -1;
  82. [SerializeField]
  83. private int disablePlayEffect = -1;
  84. private JsonData atkData;
  85. [SerializeField]
  86. public bool beAtked;
  87. public int damage;
  88. private Transform player;
  89. public Transform attacker;
  90. }