using System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening; using DG.Tweening.Core; using DG.Tweening.Plugins.Options; using UnityEngine.UI; public class DropItemObject : MonoBehaviour { Sequence dropItem; Sequence getItem; [SerializeField] SpriteRenderer item; [SerializeField] Sprite[] itemSprite; public void ItemAppear(Vector3 enemyTrf, int spriteNum) { float moveX = Random.Range(-5f, 5f); float moveY = Random.Range(-2f, 2f); transform.position = enemyTrf; int sprite = spriteNum; item.sprite = itemSprite[sprite]; dropItem = DOTween.Sequence() .SetAutoKill(false) .Append(transform.DOMoveX(enemyTrf.x + moveX, 0.5f)).SetEase(Ease.Linear) .Join(transform.DOMoveY(enemyTrf.y + 2, 0.25f)).SetEase(Ease.OutQuart) .Insert(0.25f, transform.DOMoveY(enemyTrf.y + moveY, 0.25f).SetEase(Ease.InQuart)) .AppendCallback(() => { transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.y); } ); gameObject.SetActive(true); dropItem.Restart(); } public void itemDisappear(Vector3 playerTrf) { float xDistance = Mathf.Abs(transform.position.x - playerTrf.x); float speed = 0.3f; float disTime = xDistance / speed; getItem = DOTween.Sequence() .SetAutoKill(false) .Append(transform.DOMove(new Vector3(playerTrf.x, playerTrf.y, 0), xDistance / 30)).SetEase(Ease.Linear); getItem.Restart(); Invoke("HideObject", xDistance / 30); } public void HideObject() { CancelInvoke("HideObject"); gameObject.SetActive(false); } }