using UnityEngine; using System.Collections; public class SlotMachineScriptableObject : MonoBehaviour { public ReelScriptableObject[] reels; // Array of reels used in the slot machine public float faceSpriteSize = 1.0f; // Size of the face sprites public float spacing = 0.5f; // Spacing between the face sprites private void Start() { BuildSlotMachine(); } private void BuildSlotMachine() { // Build the slot machine by setting up the reels and faces for (int i = 0; i < reels.Length; i++) { // Create a GameObject for each reel GameObject reelObj = new GameObject("Reel" + (i + 1)); reelObj.transform.SetParent(transform); // Set the reel sprite SpriteRenderer reelRenderer = reelObj.AddComponent(); reelRenderer.sprite = reels[i].sprite; // Create and position face objects for (int j = 0; j < reels[i].faceSlots; j++) { GameObject faceObj = new GameObject("Face" + (j + 1)); faceObj.transform.SetParent(reelObj.transform); faceObj.transform.localPosition = new Vector3(0, -j * (faceSpriteSize + spacing), 0); // Set the face sprite SpriteRenderer faceRenderer = faceObj.AddComponent(); faceRenderer.sprite = reels[i].faces[j].sprite; faceRenderer.transform.localScale = new Vector3(faceSpriteSize, faceSpriteSize, 1); } } } public void StartSpin() { StartCoroutine(SpinReels()); } private IEnumerator SpinReels() { for (int i = 0; i < reels.Length; i++) { StartCoroutine(SpinReel(reels[i], i)); yield return new WaitForSeconds(0.5f); } yield return new WaitForSeconds(1.0f); IdentifyWinningFace(); } private IEnumerator SpinReel(ReelScriptableObject reel, int reelIndex) { float spinDuration = 2.0f; // Duration of the spin float elapsed = 0.0f; // Get the reel GameObject GameObject reelObj = transform.GetChild(reelIndex).gameObject; while (elapsed < spinDuration) { elapsed += Time.deltaTime; reelObj.transform.Rotate(Vector3.forward, Time.deltaTime * 360); // Spin the reel yield return null; } // Stop the spin and identify the winning face int winningIndex = Random.Range(0, reel.faceSlots); GameObject winningFaceObj = reelObj.transform.GetChild(winningIndex).gameObject; Debug.Log("Winning Face: " + reel.faces[winningIndex].itemName); } private void IdentifyWinningFace() { // Implement logic to identify and handle the winning face(s) Debug.Log("Identifying the winning face..."); } }