yyl
22 小时以前 4b5b31a23a74c1559460643836d70778d7d49931
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
using DG.Tweening;
using System;
using System.Linq;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
 
public class FloorItemCell : MonoBehaviour, IPointerClickHandler
{
 
    [SerializeField] Image itemImage;
    [SerializeField] UIEffectPlayer uieff;
    [SerializeField] RectTransform scaleObject;    //配合品质做特效缩放
 
    int itemIndex = -1;
    bool isPlaying = false;
 
    Vector2 startPos = new Vector2(10000, 10000); //起始位置,用于重置
    /// <summary>
    /// 播放掉落物品
    /// </summary>
    /// <param name="index">掉落背包索引</param>
    /// <param name="isAnimate">是否播放掉落动画</param>
    public void Display(int index, bool isAnimate, RectTransform rect)
    {
        itemIndex = index;
        float duration = 0.5f / AutoFightModel.Instance.fightSpeed; //掉落时间
        var item = PackManager.Instance.GetItemByIndex(PackType.DropItem, index);
        if (item == null)
        {
            this.transform.SetActive(false);
            return;
        }
        itemImage.SetOrgSprite(item.config.IconKey);
        int effectID = EquipModel.Instance.equipUIEffectLights[Math.Min(item.config.ItemColor, EquipModel.Instance.equipUIEffectLights.Length) - 1];
        if (effectID == 0)
        {
            uieff.Stop();
        }
        else
        {
            uieff.effectId = effectID;
            float scale = EquipModel.Instance.dropEffectScales[Math.Min(item.config.ItemColor, EquipModel.Instance.equipUIEffectLights.Length) - 1];
            scaleObject.localScale = new Vector3(scale, scale, 1);
            uieff.Play();
        }
 
       
        this.transform.position = rect.position;
        startPos = new Vector2(transform.localPosition.x + UnityEngine.Random.Range(-30, 30), transform.localPosition.y + UnityEngine.Random.Range(50, 100));
        if (isAnimate)
        {
            isPlaying = true;
            //随机方向返回1或者-1
            int randDir = UnityEngine.Random.Range(0, 2) == 0 ? 1 : -1;
 
            this.transform.localPosition = startPos;
            this.transform.DOLocalPath(new Vector3[] { startPos,
                    new Vector3(startPos.x + randDir * 15, startPos.y + 30f, 0),
                    new Vector3(startPos.x + randDir * 35, startPos.y + UnityEngine.Random.Range(-140, -130), 0) }, duration, PathType.CatmullRom).SetEase(Ease.InOutSine).OnComplete(CompleteDrop);
        }
        else
        {
            this.transform.localPosition = startPos;
            // 手动点击或者自动模式下处理
            // EquipModel.Instance.CalcFloorEquip(itemIndex);
            // itemIndex = -1;
        }
    }
 
    public void OnPointerClick(PointerEventData eventData)
    {
        if (!isPlaying)
            CompleteDrop();
    }
 
    void CompleteDrop()
    {
        EquipModel.Instance.CalcFloorEquip(itemIndex);
        isPlaying = false;
        itemIndex = -1;
    }
 
    // void OnDisable()
    // {
    //     CompleteDrop();
    // }
}