Forum begins after the advertisement:
[Part 26] – How to add bonuses like “greed”? (SOLVED!)
Home › Forums › Video Game Tutorial Series › Creating a Rogue-like Shoot-em Up in Unity › [Part 26] – How to add bonuses like “greed”? (SOLVED!)
- This topic has 0 replies, 2 voices, and was last updated 1 week, 3 days ago by
Alp Apustaja.
-
AuthorPosts
-
June 10, 2025 at 8:52 pm #18276::
Part 26 really helped me to create a better coin collect system, thank you so much! However, I would like to know, how passive bonuses like “greed” from “PlayerStats.cs” are added to the “PlayerCollector.cs”. How can this be archieved? Thank you again and Cheers!
EDIT: I found a solution! I also added some sound for Gold Pickup ;-)
using System.Collections; using System.Collections.Generic; using UnityEditor.U2D.Animation; using UnityEngine; [RequireComponent(typeof(CircleCollider2D))] public class PlayerCollector : MonoBehaviour { PlayerStats player; CircleCollider2D detector; public float pullSpeed; public UICoinDisplay UI; float coins; [Header("Audio Source")] public AudioSource collectableSound; [Header("Collect Gold Audio")] public AudioClip coinCollect; public float coinCollectVolume = 0.4F; [Header("Remove Gold Audio")] public AudioClip coinRemove; public float coinRemoveVolume = 0.4F; private void Start() { player = GetComponentInParent<PlayerStats>(); } public void SetRadius(float r) { if (!detector) detector = GetComponent<CircleCollider2D>(); detector.radius = r; } public float GetCoins() { return coins; } //Updates coins Display and information public float AddCoins(float amount) { var greed = player.Stats.greed; if (greed > 0) { coins += amount * (int)greed; collectableSound.PlayOneShot(coinCollect, coinCollectVolume); if (UI) UI.UpdateDisplay(); return coins; } else { coins += amount; collectableSound.PlayOneShot(coinCollect, coinCollectVolume); if (UI) UI.UpdateDisplay(); return coins; } } public float RemoveCoins(float amount) { coins -= amount; collectableSound.PlayOneShot(coinRemove, coinRemoveVolume); if (UI) UI.UpdateDisplay(); return coins; } // Saves the collected coins to the save file. public void SaveCoinsToStash() { SaveManager.LastLoadedGameData.coins += coins; coins = 0; SaveManager.Save(); } void OnTriggerEnter2D(Collider2D col) { //Check if the other GameObject is a Pickup. if (col.TryGetComponent(out Pickup p)) { p.Collect(player, pullSpeed); } if (col.TryGetComponent(out PickupResource pr)) { pr.Collect(player, pullSpeed); } } }
- 1 anonymous person
June 10, 2025 at 9:01 pm #18277::Based on the user’s code, the passive bonus “greed” from PlayerStats.cs is added to PlayerCollector.cs in the AddCoins() method:
public float AddCoins(float amount) { var greed = player.Stats.greed; if (greed > 0) { coins += amount * (int)greed; collectableSound.PlayOneShot(coinCollect, coinCollectVolume); if (UI) UI.UpdateDisplay(); return coins; } else { coins += amount; collectableSound.PlayOneShot(coinCollect, coinCollectVolume); if (UI) UI.UpdateDisplay(); return coins; } }
The solution multiplies the coin amount by the greed stat when greed is greater than 0, effectively implementing a passive bonus to coin collection.
- 1 anonymous person
-
AuthorPosts
- You must be logged in to reply to this topic.
Advertisement below: