Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: unOOld en Mayo 16, 2016, 10:18:35 PM

Título: duda caja de texto y posición de sprite
Publicado por: unOOld en Mayo 16, 2016, 10:18:35 PM
Hola a todos, 
 
Gracias de antemano por leer. Estoy realizando una novela visual en unity y para los diálogos creé un script que contiene un array y que muestra en pantalla cada linea de texto recorriéndola con un bucle for, sin embargo estoy teniendo problemas con los personajes, creé un public array sprite para asignar todas las poses de un personaje y cree un condicional que tiene como condición que la linea de texto sea par. Y aquí viene mi problema; yo quiero que cuando la linea de texto sea par entonces muestre  los sprites que pertenecen a ese personaje y que todas las posiciones de ese personaje estén alineadas a la izquierda pero no se como hacer en el script para que muestre los sprites y que queden todos en esa posición, hasta ahora llevo esto 
 
la cuestion esta en el ultimo if no se que agregar adentro 
 

public TextAsset textfile;
    public string[] textLines;
    public GameObject textbox;
    public Text thetext;
    public int currentline;
    public int endatline;
    public Sprite[] characterposes = null;
    
    // Use this for initialization
    void Start()
    {
        if (textfile != null)
        {
            textLines = (textfile.text.Split('\n'));
        }
        if (endatline == )
        {
            endatline = textLines.Length - 1;
        }
    }
    void Update()
    {
        thetext.text = textLines[currentline];
        if (Input.GetKeyDown(KeyCode.Return))
        {
            currentline += 1;
        }
        if(currentline > endatline)
        {
            textbox.SetActive(false);
        }
        if(currentline % 2== )
        {
              
        }
    }
    
}

 
 
Título: duda caja de texto y posición de sprite
Publicado por: juanma_teso en Mayo 16, 2016, 11:43:18 PM
El operador resto '%' devuelve 0 si el número es par, es a lo que te refieres?
Título: duda caja de texto y posición de sprite
Publicado por: unOOld en Mayo 16, 2016, 11:51:02 PM
Cita de: juanma_teso date=1463434998El operador resto '%' devuelve 0 si el número es par, es a lo que te refieres?
   


no, quiero saber que tipo de codigo poner adentro del ultimo condicional para que se muestren los sprites en pantalla y alineados a la izquierda, ya la condición esta hecha.
Título: duda caja de texto y posición de sprite
Publicado por: juanma_teso en Mayo 17, 2016, 12:27:25 AM
Aaah vale, depende de cómo lo quieras hacer, puedes usar el antiguo GUI o el nuevo UI, te aconsejo usar el UI, puede crear dos cuadros de texto UI directamente desde el editor, así puedes modificar visualmente su posición y escala en la pantalla, luego dentro de la condición asignas a cada cuadro de texto la línea que desees. Sería algo tipo:
 

using UnityEngine.UI;
public cuadroTexto;
Update(){
  if(...)
  {
      cuadroTexto.text = Linea[numero];
  }
}

 
Tienes que tener en cuenta un par de cosas; debes controlar por código cuándo activar o desactivar los cuadros de texto, tienes que tener en cuenta el tamaño del cuadro ya que si el texto es muy grande deberás cortarlo para que entre, que quede bonito depende del tiempo que le dediques. Suerte!!
 
Te dejo la api del UI.Text: http://docs.unity3d.com/ScriptReference/UI.Text.html (http://docs.unity3d.com/ScriptReference/UI.Text.html)
Título: duda caja de texto y posición de sprite
Publicado por: unOOld en Mayo 17, 2016, 03:33:49 AM
Cita de: juanma_teso date=1463437645Aaah vale, depende de cómo lo quieras hacer, puedes usar el antiguo GUI o el nuevo UI, te aconsejo usar el UI, puede crear dos cuadros de texto UI directamente desde el editor, así puedes modificar visualmente su posición y escala en la pantalla, luego dentro de la condición asignas a cada cuadro de texto la línea que desees. Sería algo tipo:
   
   

using UnityEngine.UI;
public cuadroTexto;
Update(){
  if(...)
  {
      cuadroTexto.text = Linea[numero];
  }
}

   
      Tienes que tener en cuenta un par de cosas; debes controlar por código cuándo activar o desactivar los cuadros de texto, tienes que tener en cuenta el tamaño del cuadro ya que si el texto es muy grande deberás cortarlo para que entre, que quede bonito depende del tiempo que le dediques. Suerte!!
   
   
      Te dejo la api del UI.Text: http://docs.unity3d.com/ScriptReference/UI.Text.html (http://docs.unity3d.com/ScriptReference/UI.Text.html)
   


muchisimas gracias por tu respuestas, gracias a ti estoy un poco mas clara ahora, resulta que el cuadro de texto ya lo hice y lo configure para cuando se acaben las lineas de texto se valla la imagen del cuadro de fondo tambien, es este 
 
http://imgur.com/I7maN65 (http://imgur.com/I7maN65)
 
yo me refiero a los personajes de fondo, osea estos 
 
http://imgur.com/tyuzndt (http://imgur.com/tyuzndt)
 
para esto yo cree un  public Sprite[] characterposes = null; y gracias a esto puedo poner tantos sprites como yo quiera, aqui pienso poner todas las poses que un determinado personaje va a utilizar en la conversación, al que le llame kyle, en unity me aparece asi:
 
http://imgur.com/PSVEA12 (http://imgur.com/PSVEA12)
 
pero sucede que cuando pongo a rodar el juego el personaje no me aparece en pantalla, esa era mi primera duda como hacer para que aparezca en pantalla, lo otro es que yo pensaba que porlomenos cuando las lineas de texto fueran impares saliera el personaje de kyle en pantalla alineada a la izquierda y cuando fuera una linea de texto par entonces saliera otro personaje alineado a la derecha asi las lineas de texto impares pertenecieran a un personaje y las pares a otro y se podria crear la conversación quiero saber como hacer eso y si es posible con el public Sprite[] characterposes = null; que cree
 
muchas gracias por ayudarme 
 
 
Título: duda caja de texto y posición de sprite
Publicado por: juanma_teso en Mayo 17, 2016, 12:30:08 PM
Vaale!! Ten en cuenta que para que el motor renderice un Sprite algún GO (GameObject) debe tener el componente SpriteRenderer, no sé si todo el juego sea en 2D, si es así podrías utilizar el SpriteRenderer que utiliza el Player, pero tal vez sea más fácil agregar el componente al mismo GO para evitarte problemas, con esto conseguirás mostrar el sprite de tu array de forma parecida a la que se usaría para los textos, te dejo la api:
 
http://docs.unity3d.com/ScriptReference/SpriteRenderer.html (http://docs.unity3d.com/ScriptReference/SpriteRenderer.html)
 
PD: Ten en cuenta que sólo renderiza un Sprite a la vez, si quieres tener dos personajes hablando la cosa cambia, porque debes o poner las dos imágenes en un sprite o utilizar más de un SpriteRenderer como hijos del text box manager. Suerte :)