Advertisement
Pro_Unit

GroundSpawnController

Sep 7th, 2022 (edited)
1,046
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 0.89 KB | None | 0 0
  1. public class GroundSpawnController : MonoBehaviour
  2. {
  3.     [SerializeField] private Transform _point;
  4.     [SerializeField] private Transform _player;
  5.     [SerializeField] private Transform _spawnPoint;
  6.     [SerializeField] private GameObject _groundPrefab;
  7.  
  8.     [SerializeField] private float _distance = 20f;
  9.  
  10.     private void Start() =>
  11.         StartDistanceChecking();
  12.  
  13.     public void StartDistanceChecking() =>
  14.         StartCoroutine(WaitWhile(PlayerInsideDistance, Spawn));
  15.  
  16.     private bool PlayerInsideDistance() =>
  17.         Vector2.Distance(_point.position, _player.position) <= _distance;
  18.  
  19.     private static IEnumerator WaitWhile(Func<bool> predicate, Action onComplete)
  20.     {
  21.         yield return new WaitWhile(predicate);
  22.         onComplete?.Invoke();
  23.     }
  24.  
  25.     private void Spawn() =>
  26.         Instantiate(_groundPrefab, _spawnPoint.position, _spawnPoint.rotation);
  27. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement