Esempio n. 1
0
File: Pim.cs Progetto: mjukmara/Pim
    bool PickupItem(PickupPoint pickupPoint)
    {
        if (IsHoldingItem())
        {
            return(false);
        }
        if (!pickupPoint.GetItem())
        {
            return(false);
        }

        currentItem = pickupPoint.GetItem();
        pickupPoint.RemoveItem();
        currentItem.transform.SetParent(itemHolder);
        currentItem.transform.SetPositionAndRotation(itemHolder.transform.position, Quaternion.identity);
        currentItem.transform.localScale = Vector3.one;

        SpriteRenderer spriteRenderer = currentItem.GetComponent <SpriteRenderer>();

        itemSortingOrderCache       = spriteRenderer.sortingOrder;
        spriteRenderer.sortingOrder = itemHolderSortingOrder;

        OnPimPickedUpItemEvent(this, currentItem.GetComponent <Item>());

        return(true);
    }
Esempio n. 2
0
    IEnumerator SlideItemToPickupPoint(GameObject item, int pickupPointIndex, bool forceIgnoreDropEffect)
    {
        while (true)
        {
            if (item == null)
            {
                break;
            }
            if (pickupPointIndex >= pickupPoints.Length)
            {
                break;
            }

            PickupPoint pickupPoint = pickupPoints[pickupPointIndex];

            if (item.transform.position.x >= pickupPoint.transform.position.x)
            {
                // The current Item have reached the first pickupPoint!
                pickupPoint.AddItem(item, forceIgnoreDropEffect);

                item = null;
                AudioManager.instance.PlaySfx("Blip_Select17");
                EZCameraShake.CameraShaker.Instance.ShakeOnce(0.2f, 5.0f, 0.2f, 0.2f);
                break;
            }
            else
            {
                if (item.transform.position.x >= pickupPoint.transform.position.x - 1)
                {
                    if (pickupPoint.GetItem() != null)
                    {
                        int nextPickupPointIndex = pickupPointIndex + 1;
                        StartCoroutine(SlideItemToPickupPoint(pickupPoint.GetItem(), nextPickupPointIndex, pickupPoint.forceIgnoreDropEffectOnNextPickupPoint));

                        pickupPoint.RemoveItem();
                    }
                }

                Vector3 currentItemPos = item.transform.position;
                currentItemPos.x       += Time.deltaTime;
                item.transform.position = currentItemPos;
            }

            // Yield execution of this coroutine and return to the main loop until next frame
            yield return(null);
        }
    }