Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Temas recientes

Problemas con el script de varios planos

Iniciado por JorgeLi, Marzo 13, 2020, 02:44:19 PM

Tema anterior - Siguiente tema
Hola,
 
Antes de nada gracias por vuestro tiempo en leer mi problema, veréis.
 
En mi proyecto tengo varios planos (4). cada no de ellos tiene un script que es el mismo. Lo que hace este script es controlar un sprite, que nos muestra is hay enemigo o no y además que tipo de enemigo. El problema es :
 


  •    Dos planos tiene el script [A0,A1]


  •    Pero uno de ellos (A0) controla el del otro, de esta manera solo uno hace el cambio del sprite.


Os dejo unas imágenes de referencia
 
Este es el código:
 

public class EnemyOnScene : MonoBehaviour {
    //Check if the plane shows an enemy
public bool enemybool;
    //The enemy object
public SpriteRenderer enemySp;
//The sprites of the enemies
Sprite en01;
    Sprite en02;
public int tipeOfEnemy = 0;
 
// Use this for initialization
void Start () {
   enemySp.GetComponent<SpriteRenderer>();
   en01 = Resources.Load<Sprite>("enemy01");
   en02 = Resources.Load<Sprite>("enemy02");
}

// Update is called once per frame
void Update () {
   enemies();
}
    void enemies()
    {
        switch (tipeOfEnemy)
        {
      case 0:
                enemySp.GetComponent<SpriteRenderer>().sprite = en01;
         break;
      case 1:
         enemySp.GetComponent<SpriteRenderer>().sprite = en02;
         break;
        }
}
}

 
 
 
El enemybool lo hace perfecto, claro que es porque la cámara tiene un raycast.
 
Si alguien sabe porqué pasa esto le estaré muy agradecido. Saludos.
 
 
 
 
 


Vale, ya lo he podido solucionar.
 
Dado que estoy usando un raycast lo que hice fue:
 


  1.    Crearme unavariable dentro del script que tiene la cámara que es el que lanza el raycast.


  2.    Cuando el rayo toque el plano, recoge el numero de TipeOfEnemy que contiene.


  3.    Luego en el script EnemyOnScene llamo el script de CameraCheckScr, y cambio el switch(cameraCheck.variableCreada).


De esta menera, cada plano muestra el enemigo que yo le haya puesto.
 
Lo dejo aquí por si a alguien le sirve.
 

public class EnemyOnScene : MonoBehaviour {
    //Check if the plane shows an enemy
public bool enemybool;
    //The enemy object
public SpriteRenderer enemySp;
//All the sprites of the enemies that we will have
Sprite en01;
    Sprite en02;
public int tipeOfEnemy = 0;
//Now we call the CameraCheckScr
public CameraCheckScr cameraCheck;
// Use this for initialization
void Start () {
        //Get the component render from the Srpite
   enemySp.GetComponent<SpriteRenderer>();
        //Equal all Sprites with his enemy
   en01 = Resources.Load<Sprite>("enemy01");
   en02 = Resources.Load<Sprite>("enemy02");
}

// Update is called once per frame
void Update () {
   enemies();
}
    void enemies()
    {
        //Now check the y varibale that has the number for the tipeOfEnemy
        switch (cameraCheck.y)
        {
      case 1://Gets the SpriteRender and shows only the sprite of enemy01
                enemySp.GetComponent<SpriteRenderer>().sprite = en01;
         break;
      case 2:
         enemySp.GetComponent<SpriteRenderer>().sprite = en02;
         break;
        }
}
}

 
Saludos.

Etiquetas: