Hi to all,
I’m a begginer in coding and I found my first wall in this scripts.
The idea is that when I puss a GameObject Buton it uses Loops to get the IDs (int numbers) for each respective Camera, Button and Light and activates only that selectet and deactivates the rest in the scene but idk how to make it properly work.
Thanks to everyone that is willing to give any davice.
public class BotonesCRT : MonoBehaviour, IInteractuable
{
[Header("Datos")]
public int ID;
public int Indice;
public Vector3[] Posiciones;
[Header("Movimiento")]
private bool DeboMoverme;
private bool MovimientoContinuo;
private float Velocidad = 0.00001f;
[Header("Audios")]
[SerializeField] private AudioSource SonidoBotonRCT;
[SerializeField] private AudioClip ClickBotonRCT;
void Update()
{
Movimiento();
}
public void AlInteractuar()
{
GestorDeCamaras.Instancia.ActivarIDs(ID);
}
public void ActivarBotones(bool pulsado)
{
if (pulsado)
{
DeboMoverme = true;
SonidoBotonRCT.volume = PlayerPrefs.GetFloat("Volumen_Master", 0.5f);
SonidoBotonRCT.PlayOneShot(ClickBotonRCT);
}
else
{
DeboMoverme = false;
SonidoBotonRCT.volume = PlayerPrefs.GetFloat("Volumen_Master", 0.5f);
SonidoBotonRCT.PlayOneShot(ClickBotonRCT);
}
}
private void Movimiento()
{
if (!DeboMoverme)
{
return;
}
transform.localPosition = Vector3.MoveTowards(transform.localPosition, Posiciones[Indice], Velocidad * Time.deltaTime);
ComprobarDistancia();
}
public void ComprobarDistancia()
{
if (Vector3.Distance(transform.localPosition, Posiciones[Indice]) <= 0.01f)
{
transform.localPosition = Posiciones[Indice];
HeLlegadoADestino();
}
}
public void HeLlegadoADestino()
{
DeboMoverme = MovimientoContinuo;
Indice++;
if (Indice >= Posiciones.Length)
{
Indice = 0;
}
}
}
public class GestorDeCamaras : MonoBehaviour
{
[Header("Lists")]
public static GestorDeCamaras Instancia;
public List<BotonesCRT> Botones;
public List<IDCamaras> Camaras;
public List<IDLinternas> Luces;
private void Awake()
{
Instancia = this;
}
public void Start()
{
for (int i = 0; i < Botones.Count; i++)
{
Botones[i].ID = i;
}
for (int i = 0; i < Camaras.Count; i++)
{
Camaras[i].ID = i;
}
for (int i = 0; i < Luces.Count; i++)
{
Luces[i].ID = i;
}
}
public void ActivarIDs(int ID)
{
for (int i = 0; i < Botones.Count; i++)
{
Botones[i].ActivarBotones(Botones[i].ID == ID);
}
for (int i = 0; i < Camaras.Count; i++)
{
Camaras[i].ActivarCamaras(Camaras[i].ID == ID);
}
for (int i = 0; i < Luces.Count; i++)
{
Luces[i].ActivarLinternas(Luces[i].ID == ID);
}
}
}
public class IDCamaras : MonoBehaviour
{
public int ID;
public void ActivarCamaras(bool opcion)
{
if (opcion)
{
}
else
{
}
}
}
public class IDLinternas : MonoBehaviour
{
public int ID;
public void ActivarLinternas(bool opcion)
{
if (opcion)
{
}
else
{
}
}
}