public GameObject CreateNewBlock() { if (_currentBlock) { _lastBlock = _currentBlock; } BlockGenerateData newData = _blockDatas[UnityEngine.Random.Range(0, _blockDatas.Count)]; GameObject newSpawnPoint = newData.spawnPoints[UnityEngine.Random.Range(0, newData.spawnPoints.Count)]; GameObject newBlock = Instantiate(_blockPrefab, newSpawnPoint.transform.position, Quaternion.identity, _parentForBlocks.transform); newBlock.GetComponent <Block>().SetNewData(newData); if (_lastBlock) { float x = newData.MoveDirection == Vector3.right ? newSpawnPoint.transform.position.x : _lastBlock.transform.position.x; float z = newData.MoveDirection == Vector3.forward ? newSpawnPoint.transform.position.z : _lastBlock.transform.position.z; newBlock.transform.position = new Vector3(x, newSpawnPoint.transform.position.y, z); } _currentBlock = newBlock; _allBlocks.Add(newBlock); SetupNewBlock(newBlock); onBlockGenerated?.Invoke(); return(newBlock); }
public void SetNewData(BlockGenerateData data) { blockData = data; }