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 - neiro

#1
General (Antiguo) / IA Camino/Andar random
Febrero 25, 2017, 06:04:56 PM
Cita de: lightbug date=1488040965Hola neiro, eso de que se quedaba bugueado no puede deberse a la eleccion de los nodos, jamas, vos seteas el destino y no importa lo que "haya en el medio", Si existe algo dinamico que te buguea todo es porque no estara seteado como obstaculo, aunque al nav mesh agent  no le importa pasa por arriba lo que sea.
   


podria crear un script en el que vaya a un mueble que busque en el array pero mi problema es que tendria que atravesar los demas muebles e ir a por el elegido aleatoriamente. No se como hacer que evite los muebles.
 
Cita de: lightbug date=1488042286Ah claro, como un Translate decis? esa es la ventaja del navmesh, y como "desventaja" (entre archi-super comillas) es que estas limitado a la navmesh, por eso te puse lo siguiente:
   
   
      Yo habia implementado algo como lo que hizo http://www.unityspain.com/profile/27156-programacionwh/?do=hovercard" data-mentionid="27156" href="<___base_url___>/profile/27156-programacionwh/" id="ips_uid_6058_6" rel="" style="">@ProgramacionWH en la epoca que el navmesh venia en pro solamente (hace un tiempito), eran arreglos de nodos, en los que uno podia conectarse con algunos otros, y te digo que esta muy bueno para aprender, claro que tenes mas probabilidades de tener un comportamiento erratico que dependera del tipo de escena y personaje, pero cuando te sale podes jugar mucho mas con el comportamiento del gameObject.
   
   
      Un ejemplo, tenia un monstruo que me ***guia, si me ocultaba el monstruo seguia hasta el ultimo nodo que me vio, luego elegia al azar dos nodos mas (no repetitivos hacia atras logico) si no me encontraba seguia patruyando como siempre. Con nav mesh te calcula todo a la perfeccion pero va derecho hasta el destino, no tiene eso de "real", sino fijate en la mayoria de los juegos de terror, salvo en Alien Isolation que es la cumbre de la IA


Utilizare esto para que calcule a tiempo real el camino para ir al objeto http://arongranberg.com/astar/
#2
General (Antiguo) / IA Camino/Andar random
Febrero 25, 2017, 05:44:18 PM
Cita de: lightbug date=1488040965Hola neiro, eso de que se quedaba bugueado no puede deberse a la eleccion de los nodos, jamas, vos seteas el destino y no importa lo que "haya en el medio", Si existe algo dinamico que te buguea todo es porque no estara seteado como obstaculo, aunque al nav mesh agent  no le importa pasa por arriba lo que sea.
   


okay, yo a lo que me refieria y lo que entendi es que elegia x destino aleatorio e iba a por el directamente solo eso entendi
#3
General (Antiguo) / IA Camino/Andar random
Febrero 25, 2017, 05:36:39 PM
Cita de: ProgramacionWH date=1487544257Podrias crear un sistema de waypoints:
   
   
      
   
   
      La estructura que ves de puntos y lineas es normalmente llamada Grafo y es frecuentemente utilizada en IA. Desde 1 solo puedes ir a  [2 , 3], desde 2 a [1, 3, 5] desde 3 a [2, 4] desde 4 a [3, 5] y desde 5 a [2, 4]. Estos waypoints puedes generarlos manualmente y programar la lista de WayPoints adyacentes (A los que puedo ir) es simple tambien. Asegurate de que cuando el mapa no este modificado, 2 Waypoints solo estan conectados si pueden verse (Como en la imagen). Una vez hecho esto podrias generar rutas, por ejemplo, empezando en 1:
   
   
      ¿Desde 1 a que WPs puedo ir? - al 2 -> RUTA: 1, 2
   
   
      ¿Desde 2 a que WPs puedo ir? - al 3, 5 -> RUTA: 1, 2, 5 (Por ejemplo) , etc, etc
   
   
      De esta forma estas generando rutas aleatorias en las que el personaje puede andar en linea recta, mayor numero de WPs = mas aleatoriedad y trayectorias menos rectas.
   
   
      ¿Como solucionar el problema de los muebles?
   
   
      Simplemente al crear las rutas haces un RayCast al WP al que te tocaria ir, al crear los WPs la condicion que impusimos es que se pudiera ir en linea recta, si resulta que ahora no se puede por que el RayCast se choca con algo significa que ahora hay un obstaculo asique buscamos otra ruta aleatoria.
   
   
      
   
   
      Ejemplo: Ruta generada aleatoriamente: 1 - 2 - 3 - 4 - 5 , Raycast de 1 a 2 => OK, Raycast de 2 a 3 => ERROR , genero otra ruta aleatoria 1 - 2 - 5, COMPRUEBO => TODO OK => Me muevo
   
   
      Hacer esto a gran escala imaginate 100 WPs en esa imagen es lo que denominamos PathFinding podrias programarte tu un PathFinding mas simplificado pero dado que no sabias como afrontar el problema y tal no creo que sea lo mas apropiado. El sistema de WayPoints es lo mas sencillo si no te funciona lo que te han dicho los compañeros y puede dar un resultado decente.
   
   
       
   
   
      Un saludo.
   
   
       
   


Gracias creo que probare esta , si me pudieras decir como hacerlo mas fácil obviamente te lo agradecería. 
 
 
 
Cita de: lightbug date=1487535765Andar Random: Cada agent tiene su destination, en el momento de asignarla que puede ser de la manera que quieras elegis aleatoriamente entre algunos nodos o posiciones que tengas, que pueden ir actualizandose dinamicamente o no.
   
   
      No se, algo asi se me ocurre:
   
   

public Transform refnodo1;
public bool dinamico1 = false;
public Transform refnodo2;
public bool dinamico2 = false;
public Transform refnodo3;
public bool dinamico3 = false;
 
//...
//Update
//actualizar arreglo o lista de nodos
for(todos los nodos "i")
{
if(nodo "i" es dinamico?)
   nodo "i" = refnodo "i";
}
 

if(se llego al nodo actual?)
ElegirNodoActual();
else
Ir hacia Nodo Actual();
//...
//elegir nodo aleatoriamente
void ElegirNodoActual()
{
nodoActual = nodo[ Random.Range(listaNodos[0], listaNodos.Count) ];
}

   
      LO mejor es usar estructuras, bien prolijo para cada nodo que tenga distintas propiedades (estatico dinamico, posicion, etc)
   
   
      IA/Camino:
   
   
      Un NavMesh Agent es lo mismo que tener un charactercontroller (sin tanto sistemas de deteccion de colision). El agente tiene su nuevo mundo que el el navmesh. Para ir del punto A al B siempre tenes un camino mas corto basado en el calculos de muchisimos nodos , lo que se llama pathfinding. Cuando en la escena algo tiene el componente Obstacle o NavMeshObstacle (no recuerdo bien) lo que pasa es que a la hora de hacer el tipico pathfinding de siempre sobre un mundo estatico ahora se tiene en cuenta en el calculo a dicho objeto dinamico, entonces el camino resultante no es el mismo que si este no estuviera. Por supuesto meter cientos de objetos con el NavMeshObstacle no te va a salir gratis.
   


Ya lo probé lo que ocurría es que iba pero si hay algo en medio se quedaba ahí bugeado.
#4
General (Antiguo) / IA Camino/Andar random
Febrero 19, 2017, 04:45:22 PM
Cita de: stick date=1487517270Podes utilizar el sistema de navigation de unity, navmesh agent para los personajes que se van a mover y navmesh obstacles para los obstáculos que puedan llegar a haber en el escenario, dentro de los navmesh obstacles utiliza carve cuando el obstáculo se va a encontrar de forma estática y desactivalo para los obstáculos con movimiento. 

      De todas formas siempre se debe complementar el mismo con scripting, puedes utilizar waypoints alrededor de todo el mapa y que el jugador elija random a cual ir luego, maquinas de estado para tomas de decisiones, etc.

      Te recomiendo estos libros para profundizarte en la IA 
https://www.packtpub.com/game-development/unity-4x-game-ai-programming
https://www.packtpub.com/game-development/unity-ai-game-programming-second-edition
   


 
 
 
 
La cosa es si lso muebles se mueven esos dos sistemas no se quedan obsoletos ? Ej pongo una estanteria en medio y ya se quedaria intentando pasar bugeado porque cuando se hizo el waypoint o el navmesh decia que si se podia, obviamente ya no ? Creo que va así no ?
#5
General (Antiguo) / IA Camino/Andar random
Febrero 19, 2017, 01:04:16 AM
Buenas, llevo un par de dias buscando como hacer que haya objetos que se paseen por el mapa aleatoriamente, pero el problema es que algunos objetos se mueven por lo que creo que navegation no lo puedo utilizar ya que a la minima que cambie algo el mapa se queda obsoleto el mapa de navegacion que calcula unity.
 
Basicamente quiero que el objeto se mueva aleatoriamente sin que parezca artificial preferiblemente.
#6
General (Antiguo) / como guardar partida ?
Febrero 19, 2017, 01:00:55 AM
Al final lo logre hace unos días crear un sistema de serializado, gracias a  todos
#7
General (Antiguo) / como guardar partida ?
Enero 29, 2017, 04:54:02 PM
Cita de: lightbug date=1485704047Hola, el error se debe en principio por lo que te dice la consola, fijate que nunca se debe crear un monobehavior con el new, generalmente se declara y se asocia a algun componente.
   
   

RigidBody rg = new RigidBody();   //mal
RigidBody rg = gameObject.AddComponent<RigidBody>();   //bien

   
      En lo referente a guardar la partida, la clase serializable no debe heredar de monobehavior, tenes que utilizar una clase que lleve los datos "puros" como quien dice, nativos de C# (int, float ,strings). Existen en el asset store "serializadores" de todo, ni idea como funcionan. Yo en un momento tambien tenia problemas para guardar las posiciones y demas, proba con almacenar los floats de las coordenadas en vez de los vector3. Al final utilice xml y santo remedio, para los transforms usaba estructuras definidas por mi y listo. Incluso estaba tan desesperado que me hice un sistemita txt xD (funcionó de maravilla).
   
   
      Como observacion que cada vez que guardas ademas estas creando fecha (que estaria mal por el error que te dice la consola), cuando el objeto que seguramente tiene los datos no lo estas considerando. A la hora de guardar tenes que pedirle a ese objeto (unico quizas) que está en escena que te pase los datos, a esos datos lo metes en la clase serializable, y luego serializas dicha clase con el binaryformatter.
   
   
      Saludos
   


me podrias enseñar a como guardar y cargar bien partida con algun ejemplo, te lo agradeceria muchisimo
 
sobretodo lo que quiero es que cuando spawne un objeto (ej enemigo) se guarde y al cargar siga en el mismo lugar con los mismos datos en sus scripts
 
y la verdad llevo dos semanas volviendome loco
#8
General (Antiguo) / como guardar partida ?
Enero 29, 2017, 01:39:01 PM
Llevo un par de semanas en las que estoy intentando guardar partida en un juego y cargar pero lamentablemente no me salen.
 
Este es el código que llevo por ahora y me da error de cifrado creo que es el MonoBehaviour en un objeto al guardar o el cifrado.
 
y ya no se como arreglarlo sinceramente yo quiero que el script fecha o que objetos spawneables al guardar se queden en el mismo sitio (aun no meti el codigo) se puedan  guardar y cargar pero me da siempre ese error
 
Los scripts los tengo en un objeto donde arrastro los scripts.
 
 
 
 
 
#9
General (Antiguo) / Problema con la colision
Diciembre 11, 2016, 01:08:53 AM
Cita de: lightbug date=1481412007Exacto, igual tene en cuenta que los colliders por si solos no detectan colisiones, tenes que atar a uno de los dos un rigidbody "kinematico" (depende de como moves a tu personaje). Si tenes 1000 cajas y un player a cual se lo pones? a las 1000 cajas ...o al player  ?
   
   
      mira la famosa tabla (parte de triggers de abajo):
   
   
      
   
       
   


ok ya tengo todo arreglado, gracias :)
#10
General (Antiguo) / Problema con la colision
Diciembre 11, 2016, 12:30:03 AM
Cita de: lightbug date=1481412007Exacto, igual tene en cuenta que los colliders por si solos no detectan colisiones, tenes que atar a uno de los dos un rigidbody "kinematico" (depende de como moves a tu personaje). Si tenes 1000 cajas y un player a cual se lo pones? a las 1000 cajas ...o al player  ?
   
   
      mira la famosa tabla (parte de triggers de abajo):
   
   
      
   
       
   


okay gracias
 
Cita de: lightbug date=1481412007Exacto, igual tene en cuenta que los colliders por si solos no detectan colisiones, tenes que atar a uno de los dos un rigidbody "kinematico" (depende de como moves a tu personaje). Si tenes 1000 cajas y un player a cual se lo pones? a las 1000 cajas ...o al player  ?
   
   
      mira la famosa tabla (parte de triggers de abajo):
   
   
      
   
       
   


el problema es que si activo solo el kinematic a mi objeto pasa esto:
 
https://gyazo.com/3dfe43bd7b28fc05631d56fc690fae75
 
 
 
se sube el otro objeto y el mio ya no se puede mover
 
Cita de: lightbug date=1481412007Exacto, igual tene en cuenta que los colliders por si solos no detectan colisiones, tenes que atar a uno de los dos un rigidbody "kinematico" (depende de como moves a tu personaje). Si tenes 1000 cajas y un player a cual se lo pones? a las 1000 cajas ...o al player  ?
   
   
      mira la famosa tabla (parte de triggers de abajo):
   
   
      
   
       
   


es que no se como  hacer que transpase y lo detecte :/
#11
General (Antiguo) / Problema con la colision
Diciembre 11, 2016, 12:01:07 AM
Cita de: lightbug date=1481410584Si queres algo de la informacion de la colision, especifico de esta (punto de contacto, velocidad, normal , etc) tiene sentido una "Colisiones".
   
   
      Si queres solo detectar cuando un cuerpo ingresa, esta o sale de otro usa triggers (Collider con isTrigger) y llama las funciones de callBack correspondientes (OnTriggerEnter, etc)
   
   
      Segun el gif se peude decir que tu player tiene un rigidbody y tu caja tambien (por q sale volando) entonces cuando se chocan responden como debe ser, segun lo que queres no tenes necesidad de usar rigidbodies, usa triggers.
   


osea que el rigibody lo quite y ponga trigers? y ya me iria ?
 
 
 
Grax :)
#12
General (Antiguo) / Problema con la colision
Diciembre 10, 2016, 11:51:03 PM
Cita de: lightbug date=1481410158Hola, no entendi que querias, estas hablando de box collider cuando los dos tienen boxcollider por eso no me queda claro, referite a pared y jugador mas facil. Cuando decis queres que "choque" y que quede quieto no es posible. Chocar o colisionar con algo implica respuesta de uno o ambos, este concepto en unity se confunde mucho con el chocar de la realidad, el otro caso es usar triggers, por eso en unity necesitas un rigidbody no kinematico para "chocar". 
   
   
      Otra cosa, que queres decir con " al atravesarlo vaya el box colider " ??
   
   
       
   


Lo que quiero es que el que muevo si pasa por el bloque ese fijo se quede en medio osea que se pueda transpasar sin chocar y al transpasarlo lo detecte como colision en vez colisionar y volverse loco
#13
General (Antiguo) / Problema con la colision
Diciembre 10, 2016, 11:24:57 PM
Estoy creando un proyecto en el que quiero que haya un box collider pero claro mi plataforma la que muevo al ir por "toques" y no fluido choca y al chocar con otro objeto me gustaria que se quedara quieto y el boxcollider me detecte como que estan chochando y no que se vuelva loco el juego
 
https://gyazo.com/0093dff22753922dcea3343d01c9ccd6
 
(GIF de lo que pasa al colisionar)
 
 
 
Claro se queda fijo si activo el kinematic del rigibody pero claro no funciona el boxcollider.
 
 
 
Lo que quiero es que el box collider funcione y los objetos no se muevan sigan quietos y preferiblemente que con mi objeto le pueda atravesar al objeto y al atravesarlo vaya el box colider como ya he dicho sin que se vuelva loco.
#14
General (Antiguo) / Unir un script con otro script
Agosto 02, 2015, 07:16:12 PM
Verán si tengo en un código de c# un public void creado y quiero que otro script realice esa función que debo hacer, mi ejemplo es si tengo en un script que se active un texto y se desactive y en el otro script (aqui la duda) como uno el void en el if del otro script.
#15
General (Antiguo) / AYUDA TIEMPO EN C#
Julio 17, 2015, 03:12:27 AM
Cita de: francoe1 date=1437054768

int Score;
void Update()
{
       if(Input.GetButtonMouseDown(0))
       {
           Score += 100;
       }
}

Te recomiendo pasar por mi canal de Youtube, explico esto y otras cosas. Suerte!
 
 
 
Gracias ante todo, pero eso es para que sume 100 por click y lo que yo me refiero es hacer click en un boton y se sume 100 cada segundo a una puntuacion.
 
Por ejemplo darle a un boton y que tu municion o vida suba +100  POR SEGUNDO (se que es una cifra alta pero es un ejemplo)