Menú

Mostrar Mensajes

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.

Mostrar Mensajes Menú

Mensajes - oridar

#1
Cita de: juanma_teso date=1495811414La clase List implementa un método que busca en todos los elementos con las condiciones que tú definas, en otras palabras tu objeto Mezcla tiene una función que busca en todas las listaMezclaClas la que coincida con las condiciones que quieras, esto lo hace haciendo uso de un predicado, un predicado es un tipo de delegado que es como una función que creas para buscar en la lista.
   
   
      Depende de lo que quieras lograr puedes buscar por elementos que tiene listaMezclaClas o puedes buscar de los 20 elementos los que tengas:
   
   

//Busca todos los elementos que contengan "Carbon"
List<listaMezclaClas> primerFiltro = Mezcla.FindAll( x=> x.compBase == "Carbon" || x.compExtra == "Carbon");
 
//Busca en los elementos que tienen carbon los elementos que contengan "Azufre"
List<listaMezclaClas> segundoFiltro = primerFiltro.FindAll ( x=> x.compBase == "Azufre" || x.compExtra == "Azufre");
 
//Puedes hacerlo una última vez con la opción "PocionX"

   
      De esta forma puedes crear en tu trigger una función que busca los objetos que tienes y si con los objetos que tienes hay alguna opción o más de una posible simplemente la devuelve, el problema es que si tienes muchos objetos diferentes puedes tener muchas combinaciones, por esto estaría bien que comenzaras por el más restrictivo, por ejemplo si tienes 10 compBase pero solo 4 pociones, busca siempre primero las pociones que tengas.
   
   
      Igual hay otra forma menos complicada de hacerlo pero así es como yo lo haría. Suerte!
   
   
       
   


gracias por tu respuesta, ya encontre un sistema parecido, pero m elo guardo como alternativa, gracias de verdad.
 
Cita de: kingtrase date=1495810844puedes usar lambda:
   
   

ListaMesclas lm = Mezcla.Find(o => o.comBase == "nombreObjeto");
//recogera de tu lista la que en comBase tenga "x objeto".
//donde 'o' es una variable de tipo ListaMesclas.
...

   
      o como tu lo quieras usar, esta es una forma de acceso rapido a listas o diccionarios.
   
   
      -> En una Lista puedes acceder desde un indice de tipo int=> lista[index].propertie...
   
   
      -> En un diccionario cambia la cosa, si lo declaras con un Key de tipo string puedes acceder al diccionario de esta forma=>
   
   

Dictionary<string,string> d = new Dictionary<string,string>();
 d.Add("key1","value1");
d.Add("key2","value2");
d["key1"] = "nuevo valor";

   
      puedes buscar referencia sobre lambda o System.Collection.Generic (es el nombre de espacio de List y Dictionary) en internet.
   
   
      Un Saludo.
   


si, encontre algo parecido, gracias por el comentario.
 
Cita de: James Roman date=1495766166no necesitas usar diccionarios en el script imagino que lo que quires hacer es una espcie de sistema de crafting, podrias añadir lo siguiente
   
   

public class Inventario
{
public List<string> items;
    public List<listaMescla> mezcla;
     
    void OnTriggerEnter(Collider other)
{
      for(int n = ; n < mezcla.Count ; n++)
      {
          if(items.Contains(mezcla[n].compBase) && items.Contains(mezcla[n].compExtra) && items.Contains(mezcla[n].catalizador))
          {
               Debug.log("El jugador posee los ingrediendes para craftear " + mezcla[n].nombre);
          }
      }
    }
}

   
       
   


gracias por tu respuesta, encontre otro sistema mas principiante, jajaja, pero me inetresa este sistema, loq ue no me queda claro es como declaras que un objeto tiene x xompoennets, seria en listamezca tal como lo tenia?
 
gracias.
 
 
#2
buenas a todos, a ver si me pueden orientar que no consigo que me funcione.
 
Estoy intentando hacer una lista o diccionario en el que he introducido 4 propiedades de tipo string.
 
esto es una:
 

public class listaMesclas {
    public string nombre;
    public string compBase;
    public string compExtra;
    public string catalizador;
    public listaMesclas(string newNombre, string newBase, string newExtra, string newCata){
        nombre = newNombre;
        compBase = newBase;
        compExtra = newExtra;
        catalizador = newCata;
    }
}

 
luego en otro script por otro lado hago las entradas,(solo pongo tres ahora tengo unas 20 y la idea es ir ampliando):
 

List<listaMesclas> Mezcla = new List<listaMesclas>();
    Mezcla.Add (new listaMesclas("semillaPlanta1","Azufre", "Carbon", "pocion1" ));
    Mezcla.Add (new listaMesclas("semillaPlanta2","Azufre", "Plata", "pocion2" ));
    Mezcla.Add (new listaMesclas("semillaPlanta3","Carbon", "Plata", "pocion3" ));

 
hasta aquí creo que bien.
 
lo que intento conseguir es poder comprobar si en un trigger tengo tres objetos con los nombre de la lista, por ejemplo Azufre, carbon, y pocion1, que me devuelva la posición o el nombre del primer valor, semillaPlanat1 en este caso, o la posición 0.
 
el trigger lo tengo, no se como hacer las consultas en el diccionario y dar validez a una posición si se cumplen los tres parámetros.
 
he estado buscando pero en tema List y Dictionary soy muy principiante, si conocen un sistema mejor también lo agradecería 
 
gracias de antemano por la atención .
 
p.d. si necesitan el script entero lo pasaría.
 
 
#3
General (Antiguo) / array de gameobjects variable
Marzo 09, 2016, 12:23:02 AM
[quote author=juanma_teso" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="35343" data-ipsquote-contentcommentid="128001 date=1457478291]Aunque coincido en que es mejor aprender a programar antes, si sabes un poco es cuestión de ir ampliando, un tipo de dato es int, string, float... GameObject, Transform, miClase... no sé darte una definición porque el nombre es la definición en sí. Para crear una lista, que tiene varias ventajas sobre el arraylist es necesario especificar un tipo entre <Tipo>, en tu caso GameObject, como te lo puse en el ejemplo, si intentas agregar 'lista.Add()' otro tipo de dato como Transform, int, string, etc... te dará error. Por último comentar que para poder usar listas, debes usar el namespace 'System.Collection.Generic', esto es un contenedor de clases, normalmente se importan dos por defecto, 'System.Collection' y el otro de Unity que ahora no recuerdo.[/quote]gracias juanma, ya especifico en la lista el tipo y tengo el system.collection.generic asignado. pero me da error igual.estoy buscando en todas las guias tanto de unity como microsoft referencias pero no encuentro el porque del error.vengo de programar en x-code, estoy aprendiendo ahora c#, si que me interesa aprender aunque por arriba digan que la gente tira aquí el código y espera respuesta, antes de subir el post estuve buscando, pero la verdad que las referencias tanto de unity como de microsoft son muy escuetas.gracias por tu ayuda, seguiré investigando, cualquier cosa lo comento por aquí.
#4
General (Antiguo) / array de gameobjects variable
Marzo 08, 2016, 11:07:29 PM
[quote author=iRobb" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="35343" data-ipsquote-contentcommentid="127995 date=1457474622]El ArrayList se utlizaba hace un tiempo. Utiliza mejor la List como te comentan. Otro tema es que no sepas los que es <T> y lo del error "tope parapete". Entonces ya, necesitas saber teoría sobre C# templates.[/quote]gracias, pero si supiera como funciona todo lo de c# ya  no estaría haciendo la pregunta, no me ayudas mucho,y ya estoy intentando hacer el list pero me peta. gracias de todos modos experto.
#5
General (Antiguo) / array de gameobjects variable
Marzo 08, 2016, 10:04:05 PM
[quote author=juanma_teso" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="35343" data-ipsquote-contentcommentid="127980">https://msdn.microsoft.com/es-es/library/6sh2ey19(v=vs.110).aspx">Entonces necesitas una lista, que es parecido al array pero dinámico, se puede añadir y quitar objetos al gusto, las listas suelen tener un tipo, GameObject o Transform o otro tipo.
public GameObject[] cubos = new GameObject[5];List<GameObject> listaCubos = new List<GameObject>();
GameObject nuevo;
void Start()
{
    //Instancias un nuevo objeto
    nuevo = Instantiate(cubos[random...]...);
    //Lo añades a la lista sin importar cuantos haya
    listaCubos.Add (nuevo);
    //Modificar elemento enésimo de la lista
    listaCubos [n].setActive (false);
    //Elementos de la lista
    Debug.Log(listaCubo.Count);
    //Elimina el elemento enésimo de la lista
    listaCubos.Remove (n);
    Debug.Log(listaCubo.Count);//Un número menos que antes.
}
Sigo sin saber qué intentas lograr, espero que te sirva.PD: te vuelvo a dejar el link para que lo mires.https://msdn.microsoft.com/es-es/library/6sh2ey19(v=vs.110).aspx">https://msdn.microsoft.com/es-es/library/6sh2ey19(v=vs.110).aspx[/quote]he reeditado mi respuesta 
#6
General (Antiguo) / array de gameobjects variable
Marzo 08, 2016, 07:42:37 PM
[quote author=juanma_teso" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="35343" data-ipsquote-contentcommentid="127980">https://msdn.microsoft.com/es-es/library/6sh2ey19(v=vs.110).aspx">Entonces necesitas una lista, que es parecido al array pero dinámico, se puede añadir y quitar objetos al gusto, las listas suelen tener un tipo, GameObject o Transform o otro tipo.
public GameObject[] cubos = new GameObject[5];List<GameObject> listaCubos = new List<GameObject>();
GameObject nuevo;
void Start()
{
    //Instancias un nuevo objeto
    nuevo = Instantiate(cubos[random...]...);
    //Lo añades a la lista sin importar cuantos haya
    listaCubos.Add (nuevo);
    //Modificar elemento enésimo de la lista
    listaCubos [n].setActive (false);
    //Elementos de la lista
    Debug.Log(listaCubo.Count);
    //Elimina el elemento enésimo de la lista
    listaCubos.Remove (n);
    Debug.Log(listaCubo.Count);//Un número menos que antes.
}
Sigo sin saber qué intentas lograr, espero que te sirva.PD: te vuelvo a dejar el link para que lo mires.https://msdn.microsoft.com/es-es/library/6sh2ey19(v=vs.110).aspx">https://msdn.microsoft.com/es-es/library/6sh2ey19(v=vs.110).aspx[/quote]gracias. he estado mirándolo pero no me sale,siento no haberme expresado bien.  Por si acaso lo repetiré intentando explicarlo mejorTengo 6 gameobjects creados:
  • public gameobject cuboRojo;
  • public gameobject cuboAmarillo;
  • etc... Hasta 6. 
quiero hacer un arraylist que pueda ir poniendo y quitando los game objects ja creados arriba.
  • public ArrayList listaCubos = new ArrayList();
luego añado los gameobjects:
  • listaCubos.Add (cuboRojo);
  • listaCubos.Add(cuboAmarillo);
y por ultimo  instanciando aleatoriamente dependiendo de los que hay dentro del array .
  • cubo = Instantiate(listaCubos[random.range(0, listaCubosLength)]);
pero no me funciona, me da un error de The tape object cannot be used as tope parapete T etc..creo que tu explicación va por ahí, pero no me sale bienMuchas gracias
#7
General (Antiguo) / array de gameobjects variable
Marzo 08, 2016, 11:53:22 AM
[quote author=juanma_teso" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="35343" data-ipsquote-contentcommentid="127957">No sé qué quieres hacer exactamente, pero las instancias no las tienes en ninguna lista. Si quieres puedes tener dos arrays, una con los cubos que tienes y otra con booleanos, y una https://msdn.microsoft.com/es-es/library/6sh2ey19(v=vs.110).aspx date=1457387462]lista o array en la que tengas los que sí puedes instanciar, luego tendrías que cambiar los booleanos según tu criterio y volver a hacer la segunda lista o array con los true, si no es lo que buscas explica un poco más.[/quote]buenas, me podrias esplicar un poco eso de las dos listas, con algún ejemplo?yo lo que quiero hacer es una array vacía que pueda meter i sacar gameobjects o vaciar la lista.pero que no me pida posición de array  simplemente vaya metiendo objetos en el siguiente espacio libre   graciasme puedes    
#8
General (Antiguo) / array de gameobjects variable
Marzo 07, 2016, 09:45:55 PM
buenas,
 
estoy intentando crear un  array con 5 gameobjects dentro que luego utilizo para instancias 1 atreves  de un random, algo así:
 



   
       
   
   
      public GameObject[] cubos = new GameObject[5];  // así los creo.
   
   
      GameObject cubo = (GameObject)Instantiate (cubos [Random.Range (0, cubos.length)]); // así los instancio aleatoriamente
   
   
       
   

[/quote]
 
vale, ahora necesito que esta lista de gameobjects, pueda cambiar sin afectar al aleatorio, me refiero a que por ejemplo tener una variable tipo boleado que active o desactive uno de los objetos y se quite de la lista o vuelva.
 
 
 
gracias.
 
voy un poco perdido, agradecería cualquier guía.
#9
General (Antiguo) / random
Febrero 16, 2016, 11:48:56 PM
[quote author=GSG3D" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="35112" data-ipsquote-contentcommentid="126933 date=1454972541]Lanza un raycast hacia el suelo desde esa posicion.[/quote]
#10
General (Antiguo) / raycast
Febrero 16, 2016, 11:46:28 PM
buenas,alguien podría indicarme un poco como funciona el raycast? lo he estado mirando en la guía de unity pero no me aclaro,estoy intentando que aleatoriamente se cree un gameobject que caerá desde cierta altura solo si debajo esta otro objeto concreto.no se como utilizar el raycast para que detecte si existe ese objeto debajo con cierto tag i instancia el gameobject que cae.gracias . 
#11
General (Antiguo) / random
Febrero 15, 2016, 10:53:28 PM
el problema es que no se como usar el raycast para verificar si la posición aleatoria y luego instancias el objeto deseado en aleatorio.alguna ayuda con el raycast? en la web de unity el ejemplo no lo entiendo, tampoco se para que sirve raycasthit.gracias por todo. 
#12
General (Antiguo) / random
Febrero 15, 2016, 09:58:16 PM
[quote author=Braltor" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="35112" data-ipsquote-contentcommentid="127150">aqui hay un tutorial de posiciones random: http://www.morphodia.com/portal/lessons/numeros-aleatorios-en-unity/ date=1455564664]http://www.morphodia.com/portal/lessons/numeros-aleatorios-en-unity/ [/quote]gracias lo he estado mirando, ya es como yo lo hacia, mas o menos.el problema es que no se como usar el raycast para verificar si la posición aleatoria y luego instancias el objeto deseado en aleatorio.alguna ayuda con el raycast? en la web de unity el ejemplo no lo entiendo, tampoco se para que sirve raycasthit.gracias por todo. 
#13
General (Antiguo) / random
Febrero 15, 2016, 08:05:32 PM
gracias pioj, soy un  poco novato  y estos días he esto probando esto que comentas, pero no se como declarar una variable de tipo Position, y que con randoms me de las coordenadas.me podes hacer un ejemplo ?? os lo agradecería un montón.
[quote author=pioj" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="35112" data-ipsquote-contentcommentid="126939">Planteas de forma errónea la creación de las instancias:
  • Declara e inicializa una variable de tipo Position, con unos Random, más arriba en el código, en lugar de crearlos in-situ dentro del Instantiate.
  • Evalúa si la posición de esos Random coincide con algún suelo. En caso contrario, puedes volver a llamar al Random para que lo haga en otra posición distinta.
  • Ahora que ya tienes una posición Random válida, sólo falta instanciar allí.
 Resumiendo, no hagas el random durante el instanciado y evalúes después; haz el random ANTES y evalúa ANTES, y por último instancia.[/quote]gracias pioj, soy un  poco novato  y estos días he esto probando esto que comentas, pero no se como declarar una variable de tipo Position, y que con randoms me de las coordenadas.

#14
por si alguien lo necesita, explico como lo solucione.el problema estaba en que uno de los objetos a colisionar no tenia movimiento y tuve que activar una opciones en el rigidbody, colisión detección en continuos dynamic, esto parece esencial si el otro objeto es estático o tiene collider pero sin rigidbody. 
#15
General (Antiguo) / random
Febrero 09, 2016, 12:07:50 AM
hols GSG3d,lo he estado mirando antes, pero no entiendo muy bien como funciona y no se como implementarlo para que primero compruebe en una área si existen los bloques gameobject i luego genere una posición aleatoria partir de estos para crear el gameobject.gracias