using UnityEngine; public class CakeSpawner : MonoBehaviour { public GameObject cakePrefab; public SpriteRenderer gameBoardSpriteRenderer; private Bounds cakeBounds; private Bounds gameBoardBounds; private float spawnTimer = 0f; private float spawnInterval = 10f; private Vector2 spawnPosition; private bool spawned = false; private static float spawnProbability = 0.9f; // Start is called once before the first execution of Update after the MonoBehaviour is created void Start() { gameBoardBounds = gameBoardSpriteRenderer.bounds; cakeBounds = cakePrefab.GetComponent().bounds; Reset(); } // Update is called once per frame void FixedUpdate() { if (!spawned) { spawnTimer += Time.fixedDeltaTime; if (spawnTimer >= 1f) { spawnTimer = 0f; if (Random.value < spawnProbability) { GameObject cake = Instantiate(cakePrefab, spawnPosition, Quaternion.identity); } spawned = true; } } else { spawnTimer += Time.fixedDeltaTime; if (spawnTimer >= spawnInterval) { Reset(); } } } public void Reset() { spawned = false; spawnTimer = 0f; spawnPosition = new Vector2( Random.Range( gameBoardBounds.min.x + cakeBounds.extents.x, gameBoardBounds.max.x - cakeBounds.extents.x ), Random.Range( gameBoardBounds.min.y + cakeBounds.extents.y, gameBoardBounds.max.y - cakeBounds.extents.y ) ); } }