Missile.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. using System;
  2. using LitJson;
  3. using UnityEngine;
  4. public class Missile : BaseBehaviour
  5. {
  6. private void Awake()
  7. {
  8. this._rigidbody2D = base.GetComponent<Rigidbody2D>();
  9. this._spriteRenderer = base.GetComponent<SpriteRenderer>();
  10. }
  11. private void OnEnable()
  12. {
  13. this.hasCollide = false;
  14. this.firstHitGround = true;
  15. this._rigidbody2D.gravityScale = 4f;
  16. this._spriteRenderer.enabled = true;
  17. }
  18. private void Start()
  19. {
  20. }
  21. private void FixedUpdate()
  22. {
  23. if (this.isOnGround && this.firstHitGround && !this.hasCollide)
  24. {
  25. this.hasCollide = true;
  26. this.firstHitGround = false;
  27. this.WaitExplosion();
  28. }
  29. }
  30. private bool isOnGround
  31. {
  32. get
  33. {
  34. return Physics2D.Raycast(base.transform.position, -Vector2.up, 0.8f, LayerManager.GroundMask).collider != null;
  35. }
  36. }
  37. private void OnTriggerEnter2D(Collider2D other)
  38. {
  39. if (other.name == "PlayerHurtBox" && !this.hasCollide)
  40. {
  41. this.hasCollide = true;
  42. this.StartExplosion();
  43. }
  44. }
  45. private void WaitExplosion()
  46. {
  47. this._rigidbody2D.gravityScale = 0f;
  48. this._rigidbody2D.velocity = Vector2.zero;
  49. this._spriteRenderer.enabled = false;
  50. R.Audio.PlayEffect(274, new Vector3?(base.transform.position));
  51. Transform transform = R.Effect.Generate(198, base.transform, default(Vector3), default(Vector3), default(Vector3), true);
  52. SalvoBulletExplosion component = transform.GetComponent<SalvoBulletExplosion>();
  53. component.SetAtkData(this.atkData, this.origin);
  54. component.SetDamage(this.damage);
  55. }
  56. private void StartExplosion()
  57. {
  58. this._rigidbody2D.gravityScale = 0f;
  59. this._rigidbody2D.velocity = Vector2.zero;
  60. this._spriteRenderer.enabled = false;
  61. R.Audio.PlayEffect(274, new Vector3?(base.transform.position));
  62. Transform transform = R.Effect.Generate(198, base.transform, default(Vector3), default(Vector3), default(Vector3), true);
  63. SalvoBulletExplosion component = transform.GetComponent<SalvoBulletExplosion>();
  64. component.SetAtkData(this.atkData, this.origin);
  65. component.SetDamage(this.damage);
  66. }
  67. public void SetAtkData(JsonData jsonData, GameObject origin)
  68. {
  69. this.atkData = jsonData;
  70. this.origin = origin;
  71. }
  72. public int damage;
  73. private JsonData atkData;
  74. [HideInInspector]
  75. public Transform attacker;
  76. private GameObject origin;
  77. public bool hasCollide;
  78. public bool firstHitGround = true;
  79. private Rigidbody2D _rigidbody2D;
  80. private SpriteRenderer _spriteRenderer;
  81. }