Advertisement
Pro_Unit

Product Switching

May 13th, 2022 (edited)
496
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.01 KB | None | 0 0
  1. using UnityEngine;
  2.  
  3. public class Product : MonoBehaviour
  4. {
  5.     public bool IsGrounded { get; private set; }
  6.  
  7.     private void OnTriggerEnter2D(Collider2D other)
  8.     {
  9.         if (!other.CompareTag("Finish"))
  10.             return;
  11.  
  12.         Debug.Log($"Продукт \"{name}\" Упал");
  13.  
  14.         IsGrounded = true;
  15.     }
  16. }
  17.  
  18. public class ProductsController : MonoBehaviour
  19. {
  20.     [SerializeField] private Vector3 _spawnPosition = new(0, 6f, 0f);
  21.     [SerializeField] private Product[] _productPrefabs;
  22.  
  23.     private Product _currentProduct;
  24.  
  25.     private int _currentProductIndex;
  26.  
  27.     /// <summary>
  28.     ///     Не могу сменить продукт пока он не упал на землю
  29.     /// </summary>
  30.     private bool CantChangeProduct =>
  31.         _currentProduct.IsGrounded == false;
  32.  
  33.     private Product Prefab =>
  34.         _productPrefabs[_currentProductIndex];
  35.  
  36.     private void Awake() =>
  37.         SpawnProduct();
  38.  
  39.     /// <summary>
  40.     ///     Cпавнить слудеющий продукт
  41.     /// </summary>
  42.     public void NextProduct()
  43.     {
  44.         if (CantChangeProduct)
  45.             return;
  46.  
  47.         _currentProductIndex++;
  48.  
  49.         if (_currentProductIndex >= _productPrefabs.Length - 1)
  50.             _currentProductIndex = 0;
  51.  
  52.         SpawnProduct();
  53.     }
  54.  
  55.     /// <summary>
  56.     ///     Cпавнить прердыдущий продукт
  57.     /// </summary>
  58.     public void PrevProduct()
  59.     {
  60.         if (CantChangeProduct)
  61.             return;
  62.  
  63.         _currentProductIndex--;
  64.  
  65.         if (_currentProductIndex <= 0)
  66.             _currentProductIndex = _productPrefabs.Length - 1;
  67.  
  68.         ChangeProduct();
  69.     }
  70.  
  71.     private void ChangeProduct()
  72.     {
  73.         Destroy(_currentProduct.gameObject);
  74.  
  75.         SpawnProduct();
  76.     }
  77.  
  78.     private void SpawnProduct()
  79.     {
  80.         _currentProduct = Instantiate(Prefab, _spawnPosition, Quaternion.identity);
  81.  
  82.         Debug.Log($"Продукт \"{_currentProduct.name}\" Заспавнился ");
  83.     }
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement