|
@@ -0,0 +1,148 @@
|
|
|
+using UnityEngine;
|
|
|
+using UnityEngine.EventSystems;
|
|
|
+
|
|
|
+using System.Collections;
|
|
|
+using System.Collections.Generic;
|
|
|
+
|
|
|
+public class Star : MonoBehaviour, IPointerClickHandler
|
|
|
+{
|
|
|
+ #region 变量
|
|
|
+
|
|
|
+ public Rigidbody2D Rigidbody
|
|
|
+ {
|
|
|
+ get
|
|
|
+ {
|
|
|
+ if (Rigidbody_ == null)
|
|
|
+ {
|
|
|
+ Rigidbody_ = GetComponent<Rigidbody2D>();
|
|
|
+ }
|
|
|
+
|
|
|
+ return Rigidbody_;
|
|
|
+ }
|
|
|
+ set { Rigidbody_ = value; }
|
|
|
+ }
|
|
|
+ public BoxCollider2D BoxCollider
|
|
|
+ {
|
|
|
+ get
|
|
|
+ {
|
|
|
+ if (BoxCollider_ == null)
|
|
|
+ {
|
|
|
+ BoxCollider_ = GetComponent<BoxCollider2D>();
|
|
|
+ }
|
|
|
+
|
|
|
+ return BoxCollider_;
|
|
|
+ }
|
|
|
+ set { BoxCollider_ = value; }
|
|
|
+ }
|
|
|
+ public SpriteRenderer SpriteRenderer
|
|
|
+ {
|
|
|
+ get
|
|
|
+ {
|
|
|
+ if (SpriteRenderer_ == null)
|
|
|
+ {
|
|
|
+ SpriteRenderer_ = GetComponentInChildren<SpriteRenderer>();
|
|
|
+
|
|
|
+ SpriteRenderer_.CreateTweenScale(0, 0.75f, 0.25f, false, true, Curve.EaseOutQuad);
|
|
|
+
|
|
|
+
|
|
|
+ TweenRoot tween = SpriteRenderer_.CreateTweenSr(0, 1, 0.25f, true, false, Curve.EaseOutQuad);
|
|
|
+
|
|
|
+ tween.OnBackwardFinish = () =>
|
|
|
+ {
|
|
|
+ ManaReso.Save(gameObject);
|
|
|
+
|
|
|
+ ManaGarden.StarList.Remove(this);
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ return SpriteRenderer_;
|
|
|
+ }
|
|
|
+ set { SpriteRenderer_ = value; }
|
|
|
+ }
|
|
|
+
|
|
|
+ public Rigidbody2D Rigidbody_;
|
|
|
+ public BoxCollider2D BoxCollider_;
|
|
|
+ public SpriteRenderer SpriteRenderer_;
|
|
|
+
|
|
|
+ public float Timer;
|
|
|
+ public float SpeedY = 6f;
|
|
|
+ public float FreezeY;
|
|
|
+
|
|
|
+
|
|
|
+ public static float CD;
|
|
|
+ public static float Time;
|
|
|
+
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ public void FixedUpdate()
|
|
|
+ {
|
|
|
+ Timer += UnityEngine.Time.fixedDeltaTime;
|
|
|
+
|
|
|
+ if (Timer >= Time)
|
|
|
+ {
|
|
|
+ Timer = 0;
|
|
|
+
|
|
|
+ SpriteRenderer.TweenBacSr();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (transform.position.y <= FreezeY - 0.1f)
|
|
|
+ {
|
|
|
+ Rigidbody.velocity = new Vector2();
|
|
|
+
|
|
|
+ Rigidbody.isKinematic = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public void Initialize(float freezY)
|
|
|
+ {
|
|
|
+ ManaAudio.PlayClip(Clip.BubbleClip);
|
|
|
+
|
|
|
+
|
|
|
+ float speedX = Mathf.Lerp(1.5f, 3f, Random.Range(0f, 1f));
|
|
|
+
|
|
|
+ if (Random.Range(0f,1f) < 0.5f)
|
|
|
+ {
|
|
|
+ speedX = -speedX;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ Rigidbody.velocity = new Vector2(speedX, SpeedY);
|
|
|
+
|
|
|
+ Rigidbody.isKinematic = false;
|
|
|
+
|
|
|
+ BoxCollider.enabled = true;
|
|
|
+
|
|
|
+
|
|
|
+ Timer = 0;
|
|
|
+
|
|
|
+ FreezeY = freezY;
|
|
|
+
|
|
|
+ SpriteRenderer.GetTweenSr().InDestination = true;
|
|
|
+
|
|
|
+ SpriteRenderer.GetTweenScale().InOrigin = true;
|
|
|
+
|
|
|
+
|
|
|
+ SpriteRenderer.TweenForScale();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public void OnPointerClick(PointerEventData eventData)
|
|
|
+ {
|
|
|
+ ManaAudio.PlayClip(Clip.CurrentClip);
|
|
|
+
|
|
|
+
|
|
|
+ Rigidbody.velocity = new Vector2();
|
|
|
+
|
|
|
+ Rigidbody.isKinematic = true;
|
|
|
+
|
|
|
+ BoxCollider.enabled = false;
|
|
|
+
|
|
|
+
|
|
|
+ ManaInfo.Show(Language.GetStr("Object", "Star") + CD.ToString("0") + Language.GetStr("Plural", "Seconds"), 10f);
|
|
|
+
|
|
|
+ ManaCenter.MiniTimer -= CD;
|
|
|
+
|
|
|
+ SpriteRenderer.TweenBacSr();
|
|
|
+ }
|
|
|
+}
|