Guía Lab 13
Guía Lab 13
}
Probar la aplicacion
Modificar GameSettings
using System.Collections; NivelDesbloqueado = NivelActual;
using System.Collections.Generic; PlayerPrefs.SetFloat(NameNivelDesbloqueado,
NivelDesbloqueado);
using UnityEngine;
}
public class GameSettings : MonoBehaviour
}
{
private void Awake()
static string NameNivelDesbloqueado = "Nivel Desbloqueado";
{
static string NameNivelActual = "Nivel Actual";
NivelDesbloqueado =
public float NivelActual = 0; PlayerPrefs.GetFloat(NameNivelDesbloqueado);
public float NivelDesbloqueado = 0; NivelActual = PlayerPrefs.GetFloat(NameNivelActual);
public static GameSettings Instance { get; private set; } if (Instance != null)
public void SetValueNivel(float pos) {
{ Destroy(gameObject);
NivelDesbloqueado = pos; }
PlayerPrefs.SetFloat(NameNivelDesbloqueado, NivelDesbloqueado); else
} {
public void SetValueActual(float pos) Instance = this;
{ }
NivelActual = pos; }
PlayerPrefs.SetFloat(NameNivelActual, NivelActual); }
}
public void LevelComplete()
{
if(NivelActual> NivelDesbloqueado)
{
Agregar Objeto GameSettings
Creamos un Prefab del Character
Creamos mas personajes
Modificamos Script
ControllerRecogerBasura
using System.Collections; for (int i = 0; i < GameSettings.Instance.NivelActual; i++)
using System.Collections.Generic; {
using UnityEngine; ListaCharacter[i].SetActive(true);
using UnityEngine.SceneManagement; }
using UnityEngine.UI; }
// Update is called once per frame
public class ControllerRecogerBasura : MonoBehaviour void Update()
{ {
// Start is called before the first frame update ListaBasuras = GameObject.FindGameObjectsWithTag("Basura");
public Text TextoBasura; if(max< ListaBasuras.Length)
public GameObject[] ListaBasuras; {
public List<GameObject> ListaCharacter = new List<GameObject>(); max = ListaBasuras.Length;
private int max = 0; }
public string ScenaMapa; TextoBasura.text = ListaBasuras.Length + "/" + max;
void Start()
{ if(ListaBasuras.Length==0)
InicializarDatos(); {
} GameSettings.Instance.LevelComplete();
public void InicializarDatos() SceneManager.LoadScene(ScenaMapa);
{ }
for (int i = 0; i < ListaCharacter.Count; i++) }
{ }
ListaCharacter[i].SetActive(false);
}
Asignamos valores
Cambiamos Script ControllerMapScene
using System.Collections; void Update()
using System.Collections.Generic; {
using UnityEngine; if (Input.GetMouseButtonDown(0))
using UnityEngine.SceneManagement; {
Vector3 mousePos =
Camera.main.ScreenToWorldPoint(Input.mousePosition);
public class ControllerMapScene : MonoBehaviour
Vector2 mousePos2D = new Vector2(mousePos.x,
{ mousePos.y);
// Start is called before the first frame update RaycastHit2D hit = Physics2D.Raycast(mousePos2D,
Vector2.zero);
public List<ZoneScript> ListaZonas = new List<ZoneScript>();
if (hit.collider != null)
public string Nivel1;
{
void Start()
Debug.Log(hit.collider.gameObject.name);
{
ZoneScript tempzone =
UpdateZones(); hit.collider.gameObject.GetComponent<ZoneScript>();
} if (tempzone != null)
public void UpdateZones() {
{ if (tempzone.pos ==
GameSettings.Instance.NivelDesbloqueado + 1)
for (int i = 0; i < ListaZonas.Count; i++)
{
{
ListaZonas[i].bloqueado = true; GameSettings.Instance.SetValueActual(tempzone.pos);
} SceneManager.LoadScene(Nivel1);
for (int i = 0; i <
GameSettings.Instance.NivelDesbloqueado; i++)
}
{
}
ListaZonas[i].bloqueado = false;
}
}
}
}
}
// Update is called once per frame
}
Agregamos a la lista de escenas
Probar la aplicación
Cambiar script Character
using System.Collections; void Update()
using System.Collections.Generic; {
using UnityEngine; }
public void SetVelocitiy()
public class Character : MonoBehaviour {
{ Rb2D.velocity = Direccion *
Velocity;
public float Velocity;
}
public Vector2 Direccion;
public void ChangeDirection()
public Rigidbody2D Rb2D;
{
// Start is called before the first
frame update Rb2D.velocity = -Rb2D.velocity;
void Start() this.transform.localScale = new
Vector3(-this.transform.localScale.x,
{ this.transform.localScale.y,
Rb2D = this.transform.localScale.z);
this.GetComponent<Rigidbody2D>(); }
Rb2D.velocity = Direccion * }
Velocity;
}
// Update is called once per frame
Cambiar ControllerRecogerBasura
using System.Collections; {
using System.Collections.Generic; ListaCharacter[i].SetActive(true);
using UnityEngine; Character Char =
ListaCharacter[i].GetComponent<Character>();
using UnityEngine.SceneManagement;
Char.SetVelocitiy();
using UnityEngine.UI;
}
}
public class ControllerRecogerBasura : MonoBehaviour
// Update is called once per frame
{
void Update()
// Start is called before the first frame update
{
public Text TextoBasura;
ListaBasuras = GameObject.FindGameObjectsWithTag("Basura");
public GameObject[] ListaBasuras;
if(max< ListaBasuras.Length)
public List<GameObject> ListaCharacter = new List<GameObject>();
{
private int max = 0;
max = ListaBasuras.Length;
public string ScenaMapa;
}
void Start()
TextoBasura.text = ListaBasuras.Length + "/" + max;
{
InicializarDatos();
if(ListaBasuras.Length==0)
}
{
public void InicializarDatos()
GameSettings.Instance.LevelComplete();
{
SceneManager.LoadScene(ScenaMapa);
for (int i = 0; i < ListaCharacter.Count; i++)
}
{
}
ListaCharacter[i].SetActive(false);
}
}
for (int i = 0; i < GameSettings.Instance.NivelActual; i++)
Probar la aplicación