using UnityEngine; using UnityEngine.EventSystems; using System.Collections; using System.Collections.Generic; public class Chest : MonoBehaviour { #region Config public Animator Animator { get { if (Animator_ == null) { Animator_ = GetComponent(); } return Animator_; } set { Animator_ = value; } } public Animator Animator_; public Rigidbody2D Rigidbody { get { if (Rigidbody_ == null) { Rigidbody_ = GetComponentInParent(); } return Rigidbody_; } set { Rigidbody_ = value; } } public BoxCollider2D BoxCollider2D { get { if (BoxCollider2D_ == null) { BoxCollider2D_ = GetComponentInParent(); } return BoxCollider2D_; } set { BoxCollider2D_ = value; } } public SpriteRenderer SpriteRenderer { get { if (SpriteRenderer_ == null) { SpriteRenderer_ = GetComponent(); 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 = () => { Animator.SetInteger("Count", 2); ResourceManager.Save(transform.parent.gameObject, true); }; } return SpriteRenderer_; } set { SpriteRenderer_ = value; } } public Rigidbody2D Rigidbody_; public BoxCollider BoxCollider_; public BoxCollider2D BoxCollider2D_; public SpriteRenderer SpriteRenderer_; public static float LiveTime = 5; public float LiveTimer; public float YSpeed = 6f; public float YFreezePosition; private float MinSpeed = 1.5f; private float MaxSpeed = 3f; #endregion public void Update() { LiveTimer += UnityEngine.Time.deltaTime; if (LiveTimer >= LiveTime) { LiveTimer = 0; Animator.SetInteger("Count", 0); } if (transform.position.y <= YFreezePosition - 0.1f) { Rigidbody.velocity = new Vector2(); Rigidbody.isKinematic = true; } } public void Init(float freezY, bool forceLeft, bool forceRight) { AudioManager.PlayClip(AudioLabel.Bubble); float speedX = Mathf.Lerp(MinSpeed, MaxSpeed, Random.Range(0f, 1f)); if (forceLeft) { speedX = -speedX; } else if (forceRight) { } else { if (Random.Range(0f, 1f) < 0.5f) { speedX = -speedX; } } Rigidbody.velocity = new Vector2(speedX, YSpeed); Rigidbody.isKinematic = false; SetCollider(true); LiveTimer = 0; YFreezePosition = freezY; SpriteRenderer.GetTweenSr().InDestination = true; SpriteRenderer.GetTweenScale().InOrigin = true; SpriteRenderer.TweenForScale(); } protected void SetCollider(bool status) { BoxCollider2D.enabled = status; } public virtual void OnPointerClick(PointerEventData eventData) { AudioManager.PlayClip(AudioLabel.GetCurrent); Rigidbody.velocity = new Vector2(); Rigidbody.isKinematic = true; } public void OnFinish() { Animator.SetInteger("Count", Animator.GetInteger("Count") + 1); } }