19-04-2016, 09:06 AM
Ho risolto il problema: praticamente non mi ero accorto che con quello script, se interagendo con una porta appariva un crosshair, contemporaneamente non interagendo con l'altra porta allora il crosshair scompariva, quindi lo script non funzionava correttamente. Ecco quello modificato
Adesso la funzione che fa scomparire il crosshair, ovvero scriptCam.StopViewOpenableDoor (), parte solo quando la mainCamera si trova all'interno di un certo range da ogni porta, al di là del quale il crosshair non subirà modifiche fino a quando non si interagirà con un'altra porta (o la stessa di prima).
Tutto funziona, ma non so perchè c'è qualcosa che non mi sconfinfera... se per caso questa soluzione potrebbe portare problemi sarei felicissimo di saperlo.
Codice:
void Update ()
{
RaycastHit hit;
ray = Camera.main.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0));
distance = Vector3.Distance (transform.position, Camera.main.transform.position);
Crosshair_Changes scriptCam = Camera.main.GetComponent<Crosshair_Changes> ();
if (interaction == true && Physics.Raycast (ray, out hit) && animationStop == true && hit.transform.name == name)
{
scriptCam.ViewOpenableDoor ();
if (locked == false)
{
if (Input.GetKeyDown ("e"))
{
changeDoorState ();
}
}
else if (locked == true && isBreaking == true)
{
if (Input.GetKeyDown ("e"))
{
Door_isBreaking breakScript = GetComponent<Door_isBreaking> ();
breakScript.Breaking ();
}
}
}
else if (distance <= 8.0F)
{
scriptCam.StopViewOpenableDoor ();
}
}
Adesso la funzione che fa scomparire il crosshair, ovvero scriptCam.StopViewOpenableDoor (), parte solo quando la mainCamera si trova all'interno di un certo range da ogni porta, al di là del quale il crosshair non subirà modifiche fino a quando non si interagirà con un'altra porta (o la stessa di prima).
Tutto funziona, ma non so perchè c'è qualcosa che non mi sconfinfera... se per caso questa soluzione potrebbe portare problemi sarei felicissimo di saperlo.