Chest.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. using UnityEngine;
  2. using UnityEngine.EventSystems;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. public class Chest : MonoBehaviour
  6. {
  7. #region 变量
  8. public Animator Animator
  9. {
  10. get
  11. {
  12. if (Animator_ == null)
  13. {
  14. Animator_ = GetComponent<Animator>();
  15. }
  16. return Animator_;
  17. }
  18. set { Animator_ = value; }
  19. }
  20. public Rigidbody2D Rigidbody
  21. {
  22. get
  23. {
  24. if (Rigidbody_ == null)
  25. {
  26. Rigidbody_ = GetComponent<Rigidbody2D>();
  27. }
  28. return Rigidbody_;
  29. }
  30. set { Rigidbody_ = value; }
  31. }
  32. public BoxCollider BoxCollider
  33. {
  34. get
  35. {
  36. if (BoxCollider_ == null)
  37. {
  38. BoxCollider_ = GetComponentInChildren<BoxCollider>();
  39. }
  40. return BoxCollider_;
  41. }
  42. set { BoxCollider_ = value; }
  43. }
  44. public BoxCollider2D BoxCollider2D
  45. {
  46. get
  47. {
  48. if (BoxCollider2D_ == null)
  49. {
  50. BoxCollider2D_ = GetComponent<BoxCollider2D>();
  51. }
  52. return BoxCollider2D_;
  53. }
  54. set { BoxCollider2D_ = value; }
  55. }
  56. public SpriteRenderer SpriteRenderer
  57. {
  58. get
  59. {
  60. if (SpriteRenderer_ == null)
  61. {
  62. SpriteRenderer_ = GetComponentInChildren<SpriteRenderer>();
  63. SpriteRenderer_.CreateTweenScale(0, 0.75f, 0.25f, false, true, Curve.EaseOutQuad);
  64. TweenRoot tween = SpriteRenderer_.CreateTweenSr(0, 1, 0.25f, true, false, Curve.EaseOutQuad);
  65. tween.OnBackwardFinish = () =>
  66. {
  67. Animator.SetInteger("Count", 2);
  68. ManaReso.Save(gameObject, true);
  69. };
  70. }
  71. return SpriteRenderer_;
  72. }
  73. set { SpriteRenderer_ = value; }
  74. }
  75. public Animator Animator_;
  76. public Rigidbody2D Rigidbody_;
  77. public BoxCollider BoxCollider_;
  78. public BoxCollider2D BoxCollider2D_;
  79. public SpriteRenderer SpriteRenderer_;
  80. public bool Is2D;
  81. public float Timer;
  82. public float SpeedY = 6f;
  83. public float FreezeY;
  84. public static float Time = 5;
  85. #endregion
  86. public void Update()
  87. {
  88. Timer += UnityEngine.Time.deltaTime;
  89. if (Timer >= Time)
  90. {
  91. Timer = 0;
  92. Animator.SetInteger("Count", 0);
  93. }
  94. if (transform.position.y <= FreezeY - 0.1f)
  95. {
  96. Rigidbody.velocity = new Vector2();
  97. Rigidbody.isKinematic = true;
  98. }
  99. }
  100. public void Initialize(bool is2D, float freezY, bool forceLeft, bool forceRight)
  101. {
  102. ManaAudio.PlayClip(Clip.BubbleClip);
  103. Is2D = is2D;
  104. float speedX = Mathf.Lerp(1.5f, 3f, Random.Range(0f, 1f));
  105. if (forceLeft)
  106. {
  107. speedX = -speedX;
  108. }
  109. else if (forceRight)
  110. {
  111. }
  112. else
  113. {
  114. if (Random.Range(0f, 1f) < 0.5f)
  115. {
  116. speedX = -speedX;
  117. }
  118. }
  119. Rigidbody.velocity = new Vector2(speedX, SpeedY);
  120. Rigidbody.isKinematic = false;
  121. SetCollider(true);
  122. Timer = 0;
  123. FreezeY = freezY;
  124. SpriteRenderer.GetTweenSr().InDestination = true;
  125. SpriteRenderer.GetTweenScale().InOrigin = true;
  126. SpriteRenderer.TweenForScale();
  127. }
  128. protected void SetCollider(bool status)
  129. {
  130. if (Is2D)
  131. BoxCollider2D.enabled = status;
  132. else
  133. BoxCollider.enabled = status;
  134. }
  135. public virtual void OnPointerClick(PointerEventData eventData)
  136. {
  137. ManaAudio.PlayClip(Clip.CurrentClip);
  138. Rigidbody.velocity = new Vector2();
  139. Rigidbody.isKinematic = true;
  140. }
  141. public void OnFinish()
  142. {
  143. Animator.SetInteger("Count", Animator.GetInteger("Count") + 1);
  144. }
  145. }