UnityGameProjectsCode / Rise2Point0Game / Level / ItemPickup.cs
ItemPickup.cs
Raw
using UnityEngine;

public class ItemPickup : MonoBehaviour
{
    private ScoreManager scoreManager;
    private AudioSource audioSource;
    private PlayerInvulnAbility pInvulnAbility;
    public Animator spriteAnim; //on the sprite child object
    public Animator objectAnim; //on the parent object
    public ParticleSystem mainParticles;
    public ParticleSystem cloudParticles;
    public ParticleSystem etherParticles;
    private ApplyForceToPlayer applyForce;
    private ApplyForceTouch applyForceTouch;
    private ApplyForceController applyForceController;
    private AchievementSystem achSys;
    public int itemWorth;
    public int scoreBoostAmount;
    public int speedBoostAmount; //150 + x
    public int invulnTime;
    private int waitTime = 10;

    [Header("Item Type")]
    public bool coinItem;
    public bool boostItem;
    public bool speedItem;
    public bool invulnItem;
    public bool speedReduceItem;

    private bool audioActive;
    private float timeSinceAudioActive;

    private void Awake()
    {
        scoreManager = ObjectManager.GetObject(4).GetComponent<ScoreManager>();
        pInvulnAbility = ObjectManager.GetObject(0).GetComponent<PlayerInvulnAbility>();
        audioSource = GetComponent<AudioSource>();
        applyForce = ObjectManager.GetObject(3).GetComponent<ApplyForceToPlayer>();
        applyForceTouch = ObjectManager.GetObject(3).GetComponent<ApplyForceTouch>();
        applyForceController = ObjectManager.GetObject(3).GetComponent<ApplyForceController>();
        achSys = ObjectManager.GetObject(4).GetComponent<AchievementSystem>();

        etherParticles.Play();
    }

    private void Update()
    {
        if (audioActive)
        {
            timeSinceAudioActive += Time.deltaTime;

            if (timeSinceAudioActive > waitTime)
                Destroy(this.gameObject);
        }
    }

    private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.gameObject.name == "Player" && !audioActive)
        {
            if (coinItem)
            {
                scoreManager.IncrementScore(itemWorth);
            }

            if (boostItem)
            {
                scoreManager.SetTempBoostAmount(scoreBoostAmount);
            }

            if (speedItem)
            {
                if (applyForce.enabled)
                    applyForce.AdjustForceMultiplier(speedBoostAmount);

                if (applyForceTouch.enabled)
                    applyForceTouch.AdjustForceMultiplier(speedBoostAmount);

                if (applyForceController.enabled)
                    applyForceController.AdjustForceMultiplier(speedBoostAmount);
            }

            if (invulnItem)
            {
                pInvulnAbility.ActivateInvulnAbility(invulnTime);
            }

            if (speedReduceItem)
            {
                if (applyForce.enabled)
                    applyForce.AdjustForceMultiplier(speedBoostAmount);

                if (applyForceTouch.enabled)
                    applyForceTouch.AdjustForceMultiplier(speedBoostAmount);

                if (applyForceController.enabled)
                    applyForceController.AdjustForceMultiplier(speedBoostAmount);
            }

            achSys.IncrementItemsPickedUp();
            audioSource.pitch = Random.Range(1, 1.25f);
            audioSource.Play();
            mainParticles.Play();
            cloudParticles.Play();
            audioActive = true;
            spriteAnim.Play("Coin Fade", 1);
            objectAnim.Play("Coin Light Fade");
        }
    }
}