コード例 #1
0
    void UpdateLoot()
    {
        Vector2 pos       = transform.position;
        var     colliders = Physics2D.OverlapCircleAll(pos, m_lootDistance * PlayerStats.Instance().GetStatValue("LootDistanceMultiplier"));

        DropItem bestItem     = null;
        float    bestDistance = float.MaxValue;

        for (int i = 0; i < colliders.Length; i++)
        {
            var item = colliders[i].GetComponent <DropItem>();
            if (item == null || item.autoloot)
            {
                continue;
            }

            Vector2 itemPos  = item.transform.position;
            float   distance = (itemPos - pos).sqrMagnitude;
            if (distance < bestDistance)
            {
                bestDistance = distance;
                bestItem     = item;
            }
        }

        float currentItemDist = float.MaxValue;

        if (m_currentLoot != null)
        {
            Vector2 currentItemPos = m_currentLoot.transform.position;
            currentItemDist = (currentItemPos - pos).sqrMagnitude;
            if (currentItemDist > m_lootDistance)
            {
                m_currentLoot.HideTooltip();
                m_currentLoot   = null;
                currentItemDist = float.MaxValue;
            }
        }

        if (bestDistance < currentItemDist)
        {
            if (m_currentLoot != null)
            {
                m_currentLoot.HideTooltip();
                m_currentLoot = null;
            }

            m_currentLoot = bestItem;
            m_currentLoot.ShowTooltip();
        }

        if (Input.GetButtonDown(pickupButton) && m_currentLoot != null)
        {
            m_currentLoot.HideTooltip();
            PickubLoot(m_currentLoot);
            m_currentLoot = null;
        }
    }