Noticias

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

duda caja de texto y posición de sprite

Iniciado por unOOld, Mayo 16, 2016, 10:18:35 PM

Tema anterior - Siguiente tema
Mayo 16, 2016, 10:18:35 PM Ultima modificación: Mayo 16, 2016, 11:01:26 PM por unOOld
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== )
        {
              
        }
    }
    
}

 
 

El operador resto '%' devuelve 0 si el número es par, es a lo que te refieres?

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.

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

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
   


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
 
yo me refiero a los personajes de fondo, osea estos 
 
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
 
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 
 
 

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
 
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 :)

Etiquetas: