using NUnit.Framework; using System.Collections; using System.Collections.Generic; using UnityEngine; using static UnityEditor.U2D.ScriptablePacker; public class InstantiateObjects1 : MonoBehaviour { [SerializeField] private GameObject obiect; //obiectul care va intra pe linia de asamblare [SerializeField] private float timeToSpawn; //intervalul de timp intre generarea obiectelor [SerializeField] private GameObject placa; [SerializeField] private float rotateAngle; [SerializeField] private float duration; private Quaternion startRotation; private Quaternion endRotation; //folosim coroutine pentru a genera obiectele IEnumerator Start() { startRotation = transform.rotation; StartCoroutine("GenerateObjects"); yield return new WaitForSeconds(1.0f); print("Incepe generarea de obiecte"); } private IEnumerator GenerateObjects() { endRotation = startRotation * Quaternion.Euler(0f,rotateAngle,0f); float elapsed = 0f; while (elapsed < duration) { placa.transform.rotation = Quaternion.Slerp( startRotation, endRotation, elapsed / duration ); elapsed += Time.deltaTime; yield return null; } placa.transform.rotation = endRotation; yield return new WaitForSeconds(0.2f); GameObject obiectGenerat = Instantiate(obiect, transform.position, Quaternion.identity); CapsuleCollider cp = obiectGenerat.GetComponent(); yield return new WaitForSeconds(0.2f); elapsed = 0f; while (elapsed < duration) { placa.transform.rotation = Quaternion.Slerp( endRotation, startRotation, elapsed / duration ); elapsed += Time.deltaTime; yield return null; } placa.transform.rotation = startRotation; // corecție final yield return new WaitForSeconds(timeToSpawn); Debug.Log("Au trecut " + timeToSpawn + " secunde"); StartCoroutine(DeleteColliders(obiectGenerat)); } private IEnumerator DeleteColliders(GameObject obiectGenerat) { Debug.Log("S-a sters"); yield return new WaitForSeconds(1f); StartCoroutine(GenerateObjects()); } }