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(); } return Rigidbody_; } set { Rigidbody_ = value; } } public BoxCollider2D BoxCollider { get { if (BoxCollider_ == null) { BoxCollider_ = GetComponent(); } return BoxCollider_; } set { BoxCollider_ = value; } } public SpriteRenderer SpriteRenderer { get { if (SpriteRenderer_ == null) { SpriteRenderer_ = GetComponentInChildren(); 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") + Auxiliary.GetUnit((int)CD, Unit.Second), 10f); ManaCenter.MiniTimer -= CD; SpriteRenderer.TweenBacSr(); } }