示例#1
0
    private void PlaceDownOffering()
    {
        if (_gravesCollider.GravesInCollider.Count > 0)
        {
            List <Gravestone> nearGraves = _gravesCollider.GravesInCollider;

            float      Distance     = Vector2.Distance(playerRB.position, nearGraves[0].transform.position);
            Gravestone closestGrave = nearGraves[0];
            foreach (Gravestone grave in nearGraves)
            {
                if (!grave.currentOffering)
                {
                    if (Vector2.Distance(playerRB.position, grave.transform.position) < Distance)
                    {
                        Distance     = Vector2.Distance(playerRB.position, grave.transform.position);
                        closestGrave = grave;
                    }
                }
            }
            if (!closestGrave.currentOffering)
            {
                Offering offering = collectedOfferings[0];                                 //take the first offering off our list
                offering.gameObject.SetActive(true);                                       //reenable this offering
                offering.transform.position = closestGrave.OfferingPos.transform.position; //and move it our graves offering position
                _placeDownSound.Play();
                closestGrave.RaiseHappiness(offering.HealAmount);                          //heal our grave
                offering.FadeAway(closestGrave);                                           //slowly fade it away
                collectedOfferings.RemoveAt(0);                                            //remove the offering from our list
                Events.current.PlaceDownOffering(offering);

                LevelSceneManager.instance.timeSinceLastMiscPrompt = 0f;
            }
        }
    }