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); }
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); } }