using UnityEngine; public class YummyCake : MonoBehaviour { public AudioClip spawnSound; public AudioClip breakSound; public AudioClip missedSound; public AudioClip stormSound; public GameObject lightningPrefab; public GameObject laserPrefab; public GameObject magnetPrefab; public GameObject keyPrefab; private AudioSource audioSource; private Animator animator; private static float laserProbability = 0.4f; private static float magnetProbability = 0.2f; private static float keyProbability = 0.1f; private static float manyProbability = 0.2f; private static float stormProbability = 0.01f; // Start is called once before the first execution of Update after the MonoBehaviour is created void Start() { audioSource = GetComponent(); animator = GetComponent(); audioSource.PlayOneShot(spawnSound); } public void BreakOrMiss() { // TODO: Implement logic to check if the cake is in a clear area or not bool inClearArea = true; if (inClearArea) { animator.SetTrigger("break"); audioSource.PlayOneShot(breakSound); Break(); } else { animator.SetTrigger("miss"); audioSource.PlayOneShot(missedSound); } } public void OnAnimationComplete() { Destroy(gameObject); } private void SpawnItem(float randomValue) { if (randomValue < laserProbability) { Instantiate(laserPrefab, transform.position, Quaternion.identity); } else if (randomValue < magnetProbability) { Instantiate(magnetPrefab, transform.position, Quaternion.identity); } else if (randomValue < keyProbability) { Instantiate(keyPrefab, transform.position, Quaternion.identity); } else { Instantiate(lightningPrefab, transform.position, Quaternion.identity); } } private void Break() { float isStorm = Random.value; if (isStorm < stormProbability) { // Trigger a storm event, ie. spawn multiple items at once. audioSource.PlayOneShot(stormSound); for (int i = 0; i < Random.Range(8, 12); i++) { float randomValue = Random.value; SpawnItem(randomValue); } } else { // The first yummy is guaranteed. float randomValue = 0.0f; while (randomValue < manyProbability) { SpawnItem(randomValue); // Update randomValue to determine if we should spawn another item. randomValue = Random.value; } } } }