SalvoBulletExplosion.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using System;
  2. using System.Collections;
  3. using GameWorld;
  4. using LitJson;
  5. using UnityEngine;
  6. public class SalvoBulletExplosion : BaseBehaviour
  7. {
  8. private bool isOnGround
  9. {
  10. get
  11. {
  12. RaycastHit2D hit = Physics2D.Raycast(base.transform.position, -Vector2.up, 0.8f, LayerManager.GroundMask);
  13. return hit;
  14. }
  15. }
  16. private void OnEnable()
  17. {
  18. this.isUsed = false;
  19. this.groundDisbale = false;
  20. base.GetComponent<Collider2D>().enabled = true;
  21. }
  22. private void Update()
  23. {
  24. if (this.isOnGround && !this.groundDisbale)
  25. {
  26. this.groundDisbale = true;
  27. base.StartCoroutine(this.DisableCollider());
  28. }
  29. }
  30. private IEnumerator DisableCollider()
  31. {
  32. yield return new WaitForSeconds(0.5f);
  33. base.GetComponent<Collider2D>().enabled = false;
  34. yield break;
  35. }
  36. private void OnTriggerEnter2D(Collider2D other)
  37. {
  38. if (other.name == "PlayerHurtBox" && !this.isUsed)
  39. {
  40. PlayerHurtAtkEventArgs args = new PlayerHurtAtkEventArgs(other.transform.parent.gameObject, base.gameObject, this.origin, this.damage, Incrementor.GetNextId(), this.atkData, false);
  41. EventManager.PostEvent<Transform, PlayerHurtAtkEventArgs>("PlayerHurtAtk", base.transform, args);
  42. this.isUsed = true;
  43. }
  44. }
  45. public void SetDamage(int _damage)
  46. {
  47. this.damage = _damage;
  48. }
  49. public void SetAtkData(JsonData data, GameObject origin)
  50. {
  51. this.atkData = data;
  52. this.origin = origin;
  53. }
  54. public int damage;
  55. private JsonData atkData;
  56. private GameObject origin;
  57. private bool isUsed;
  58. private bool groundDisbale;
  59. }