También necesito saber cuando creo un gameobject esfera por el escript en c# pues cambiarle el tamaño a la esfera, ya que creo varias esferas y pues a la hora de posicionarlas si estan muy cercas puede que esto me traiga problemas y seguro que debo reducir su radio por código. Alguien que me pueda orientar en este tema,
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
#17
General (Antiguo) / Cargar textura 2D desde la carpeta Resources
Enero 13, 2016, 12:32:16 AM
Vale, ya me funciono, el problema que tenia anteriormente era que cogía del txt el nombre de la imagen.jpg y sin embargo en la carpeta textura solamente esta imagen, y por eso no funcionaba lo de añadir textura, sera que: GameObject esfera = GameObject.CreatePrimitive(PrimitiveType.Sphere);
esfera.transform.position = new Vector3((float) p.x, 0, (float) p.z);//Se cre correctamente la esfera en la posicion que tengo del txt que se encuentra en Resources
Renderer rend = esfera.GetComponent<Renderer>();
rend.material.mainTexture = Resources.Load("texturas/"+ p.file_name) as Texture; Si p.file_name= imagen.jpg por eso cuando se busca la textura en la carpeta Resources solo se llama imagen y por eso no se la añadia a la esfera. Por ahora tuve que mediante una cadena de caracteres eliminar .jpg para que me funcione, si hay una forma mas optima indicamelo por favor.
esfera.transform.position = new Vector3((float) p.x, 0, (float) p.z);//Se cre correctamente la esfera en la posicion que tengo del txt que se encuentra en Resources
Renderer rend = esfera.GetComponent<Renderer>();
rend.material.mainTexture = Resources.Load("texturas/"+ p.file_name) as Texture; Si p.file_name= imagen.jpg por eso cuando se busca la textura en la carpeta Resources solo se llama imagen y por eso no se la añadia a la esfera. Por ahora tuve que mediante una cadena de caracteres eliminar .jpg para que me funcione, si hay una forma mas optima indicamelo por favor.
#18
General (Antiguo) / Cargar textura 2D desde la carpeta Resources
Enero 12, 2016, 01:33:14 PM
cuando hago esto me sale este mensaje de errorAssets/Lector.cs(113,42): error CS1729: The type `UnityEngine.Material' does not contain a constructor that takes `0' arguments
#19
General (Antiguo) / Cargar textura 2D desde la carpeta Resources
Enero 12, 2016, 01:15:25 PM
Gracias tendre en cuenta lo que me dices para el caso que tenga que generar muchas esferas, pero por ahora para ir entendiendo esta parte he puesto esto y se crea la esfera en la posicion que le tengo asignada que la tomo de un txt, pero no me le pone la textura a la esfera ni me invierte las normales, pues yo tambien tomo del txt el nombre de la textura al igual que la posicion. Podrian ayudarme con esto a ver que pasa con el codigo //aqui necesito crear esferas recorreindo el arrayslist donde tengo almacenadas las posiciones
void GenerarEsferas()
{ foreach (Panorama p in Registros)
{
GameObject esfera = GameObject.CreatePrimitive(PrimitiveType.Sphere);
esfera.transform.position = new Vector3((float) p.x, 0, (float) p.z);//Se cre correctamente la esfera en la posicion que tengo del txt que se encuentra en Resources
Renderer rend = esfera.GetComponent<Renderer>();
rend.material.mainTexture = Resources.Load("texturas/"+ p.file_name) as Texture;//Esta cogiendo la textura porque me muestra su nombre que lo coge de la carpeta texturas del Resources pero no se la asigna a la esfera en el codigo de arriba ni me invierte las normales
Debug.Log(p.file_name);
InvertirNormales(esfera.GetComponent<MeshFilter>());
}
} //funcion de invertir normales void InvertirNormales(MeshFilter filter)
{
//MeshFilter filter = GetComponent(typeof(MeshFilter)) as MeshFilter;
if (filter != null)
{
Mesh mesh = filter.mesh; Vector3[] normals = mesh.normals;
for (int i = 0; i < normals.Length; i++)
normals = -normals;
mesh.normals = normals; for (int m = 0; m < mesh.subMeshCount; m++)
{
int[] triangles = mesh.GetTriangles(m);
for (int i = 0; i < triangles.Length; i += 3)
{
int temp = triangles[i + 0];
triangles[i + 0] = triangles[i + 1];
triangles[i + 1] = temp;
}
mesh.SetTriangles(triangles, m);
}
}
}
void GenerarEsferas()
{ foreach (Panorama p in Registros)
{
GameObject esfera = GameObject.CreatePrimitive(PrimitiveType.Sphere);
esfera.transform.position = new Vector3((float) p.x, 0, (float) p.z);//Se cre correctamente la esfera en la posicion que tengo del txt que se encuentra en Resources
Renderer rend = esfera.GetComponent<Renderer>();
rend.material.mainTexture = Resources.Load("texturas/"+ p.file_name) as Texture;//Esta cogiendo la textura porque me muestra su nombre que lo coge de la carpeta texturas del Resources pero no se la asigna a la esfera en el codigo de arriba ni me invierte las normales
Debug.Log(p.file_name);
InvertirNormales(esfera.GetComponent<MeshFilter>());
}
} //funcion de invertir normales void InvertirNormales(MeshFilter filter)
{
//MeshFilter filter = GetComponent(typeof(MeshFilter)) as MeshFilter;
if (filter != null)
{
Mesh mesh = filter.mesh; Vector3[] normals = mesh.normals;
for (int i = 0; i < normals.Length; i++)
normals = -normals;
mesh.normals = normals; for (int m = 0; m < mesh.subMeshCount; m++)
{
int[] triangles = mesh.GetTriangles(m);
for (int i = 0; i < triangles.Length; i += 3)
{
int temp = triangles[i + 0];
triangles[i + 0] = triangles[i + 1];
triangles[i + 1] = temp;
}
mesh.SetTriangles(triangles, m);
}
}
}
#20
General (Antiguo) / Cargar textura 2D desde la carpeta Resources
Enero 11, 2016, 05:37:06 PM
Hola, necesito que me ayuden para cargar en una carpeta que tengo dentro de Resources que se llama Imagenes, todas las texturas que alli se encuentran, si tienen algun ejemplo que me sirva para texturas 2D, pues lo que he visto es para Sprite y no me sirve. Ya que yo necesito guardar todas estas texturas en un arreglo o algo para luego crear Esferas y añadirles estas texturas.
#21
General (Antiguo) / Dudas sobre Prefabs
Enero 10, 2016, 02:02:29 PM
ok, pues yo tenia duda ya que pense que si a la hora de generar esferas con distintas posiciones cada una y distintas texturas, pues al cambiar esto en el prefab todos los objetos cambiaban es decir que no iba a ser posible q tuvieran distintas pisiciones y texturas. Ya lo intentare gracias. Si tienes algun ejemplo de prefab o material de estudia te lo agradeceria
#22
General (Antiguo) / Dudas sobre Prefabs
Enero 10, 2016, 01:05:31 PM
hola, necesito saber si es posible en lo que estoy haciendo usar un prefab. Necesito crear varias esferas en la escena y que todas tengan consigo el script InvertirNormales, pero se van a diferenciar en que la textura de cada esfera y su posición no es la misma, entonces no se si haciendo un prefab esfera que tenga el script InvertirNormales asignado y luego hacer un script para generar esferas que ponga este prefab en la posición que le corresponde y con su respectiva textura. saludos
#23
General (Antiguo) / Cargar un archivo de texto con Resources
Enero 07, 2016, 02:50:18 AM
hola, necesito que me ayuden, ya que tengo un fichero de texto txt donde tengo guardado varios datos de y necesito leerlo para acceder a unas posiciones y tengo este código que me funciona pero si yo quisiera tener el fichero txt en la carpeta resources pero tengo problemas a la hora de intentar hacerlo.
Este es el código que tengo, lee de un fichero todas sus lineas y luego guardo solamente las posiciones de unos panoramas que debo luego ubicar.
Este es el código que tengo, lee de un fichero todas sus lineas y luego guardo solamente las posiciones de unos panoramas que debo luego ubicar.
TextReader Lector;
Lector = new StreamReader("C:\\panoramas.txt");
//Lector1 = Resources.Load("panoramas"); algo como esto quisiera para acceder al fichero txt cuando este en la carpeta Resources.... pero me da problemas
string lineas = Lector.ReadLine();
lineas = Lector.ReadLine();
while (lineas != null)
{
char[] delimitador = { ';' };
string[] palabras = lineas.Split(delimitador);
Panorama p = new Panorama();
p.x = Convert.ToDouble(palabras[11]) * 1000;
p.z = Convert.ToDouble(palabras[13]) * 1000;
Registros.Add(p);
lineas = Lector.ReadLine();
}
Lector.Close();
#24
General (Antiguo) / Clases en Unity
Diciembre 18, 2015, 02:54:14 PM
Yo no me refiero a la forma de posicionar esfera, lo que digo es que en VisualEstudio tengo las clases declaradas asi:
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LesctorDePanoramas
{
class MainClass
{
public static void Main(string[] arg)
{
Lector Programa = new Lector();
Programa.ejecutar();
}
}
}
***********************************************************************
Lector.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
using System.IO;
namespace LesctorDePanoramas
{
public class Lector
{
private ArrayList Registros = new ArrayList();
private Panorama Panorama = new Panorama();
public Lector()
{
this.Registros = new ArrayList();
this.Panorama = new Panorama();
}
public void ejecutar()
{
leer();
imprimirR();
}
private void leer()
{
string ubicacionArchivo;
try
{
/*Console.WriteLine("Dame la ubicacion del archivo");
ubicacionArchivo = Console.ReadLine();*/
int scala = 1000;
TextReader Lector;
Lector = new StreamReader("panoramas.txt");
//StreamReader Lector = new StreamReader(ubicacionArchivo);
string lineas = Lector.ReadLine();
while (lineas != null)
{
char[] delimitador = { ';'