Untitled
unknown
plain_text
2 years ago
1.5 kB
3
Indexable
using System.Collections; using System.Collections.Generic; using UnityEngine; public class LevelGenerator : MonoBehaviour { private const float PLAYER_DISTANCE_SPAWN_LEVEL_PART = 50f; [SerializeField] private Transform levelPartStart; [SerializeField] private List<Transform> levelPartList; [SerializeField] private GameObject player; private float spawnCooldown = 1f; private bool isSpawnable = true; private Vector3 lastEndPosition; private void Awake() { lastEndPosition = levelPartStart.Find("EndPosition").position; int startingSpawnLevelParts = 5; for (int i = 0; i < startingSpawnLevelParts; i++) { SpawnLevelPart(); } } private void FixedUpdate() { if (Vector3.Distance(player.transform.position, lastEndPosition) < PLAYER_DISTANCE_SPAWN_LEVEL_PART && isSpawnable) { SpawnLevelPart(); } } private void SpawnLevelPart() { Transform chosenLevelPart = levelPartList[Random.Range(0, levelPartList.Count)]; Transform lastLevelPartTransform = SpawnLevelPart(chosenLevelPart, lastEndPosition); lastEndPosition = lastLevelPartTransform.Find("EndPosition").position; } private Transform SpawnLevelPart(Transform levelPart, Vector3 spawnPosition) { Transform levelPartTransform = Instantiate(levelPart, spawnPosition, Quaternion.identity); return levelPartTransform; } }
Editor is loading...