feat: handle dynamically the winner wall (#40)

This commit is contained in:
2025-03-03 11:25:29 +01:00
committed by GitHub
parent e2bbf26929
commit f305cd6c1f
5 changed files with 200 additions and 174 deletions

View File

@ -7,51 +7,55 @@ public class LevelLoader : MonoBehaviour
public AudioSource audioSource;
public GameObject obstaclePrefab;
public GameObject spikePrefab;
public GameObject winnerWall;
void Start()
private GameObject GetPrefab(LevelElement.Type type)
{
if (type == LevelElement.Type.Spike)
{
return spikePrefab;
}
return obstaclePrefab;
}
private void LoadAudio()
{
audioSource.clip = Resources.Load<AudioClip>(Path.Combine("Musics", levelsLoader.levelCurrent.musicName));
audioSource.Play();
}
private void LoadElements()
{
obstaclePrefab = Resources.Load<GameObject>("Prefabs/Obstacle");
spikePrefab = Resources.Load<GameObject>("Prefabs/Spike");
winnerWall = Resources.Load<GameObject>("Prefabs/WinnerWall");
Level current = levelsLoader.levelCurrent;
foreach (var element in current.elements)
{
GameObject prefab = GetPrefab(element.type);
Instantiate(prefab, new Vector3(element.x, element.y, 0), Quaternion.identity);
}
LevelElement lastElement = current.elements[^1];
float lastX = 15;
if (lastElement != null)
{
lastX += lastElement.x;
}
Instantiate(winnerWall, new Vector3(lastX, 0, 0), Quaternion.Euler(0, 0, 90));
}
public void Start()
{
levelsLoader = GameObject.FindGameObjectWithTag("LevelsLoader").GetComponent<LevelsLoader>();
levelsLoader.IncreaseTotalAttempts();
audioSource.clip = Resources.Load<AudioClip>(Path.Combine("Musics", levelsLoader.levelCurrent.musicName));
audioSource.Play();
obstaclePrefab = Resources.Load<GameObject>("Prefabs/Obstacle");
spikePrefab = Resources.Load<GameObject>("Prefabs/Spike");
Level current = levelsLoader.levelCurrent;
// Debug.Log("Level: " + current.name);
// for (int i = 0; i < current.elements.Count; i++)
// {
// LevelElement element = current.elements[i];
// Debug.Log("Element: " + element.type + " " + element.x + " " + element.y);
// }
for (int index = 0; index < current.elements.Count; index++)
{
LevelElement element = current.elements[index];
GameObject prefab = obstaclePrefab;
if (element.type == LevelElement.Type.Spike)
{
prefab = spikePrefab;
}
Instantiate(prefab, new Vector3(element.x, element.y, 0), Quaternion.identity);
}
// // Obstacle
// // x=-6.684, y=-2.897, 0
// // scale=0.96055, 0.2326, 1
// Instantiate(obstaclePrefab, new Vector3(-6.684f, -2.897f, 0), Quaternion.identity);
// // Spike
// // -3.06, -2.93
// // scale=0.15, 0.15, 1
// Instantiate(spikePrefab, new Vector3(-3.06f, -2.93f, 0), Quaternion.identity);
LoadAudio();
LoadElements();
}
void Update()
public void Update()
{
}