Jump to content
JorgeLi

ANSWERED Problemas con el script de varios planos

Recommended Posts

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.

 

 

Captura de pantalla 2020-03-12 a las 20.28.56.png

Captura de pantalla 2020-03-12 a las 20.28.13.png

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

×
×
  • Create New...