Jump to content

Antonio

Registrados
  • Content Count

    199
  • Joined

  • Last visited

  • Days Won

    6

Antonio last won the day on December 2 2019

Antonio had the most liked content!

Community Reputation

185 Excellent

2 Followers

About Antonio

  • Rank
    Asiduo

Profile Information

  • Especialidad
    Coder

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Saludos. Durante este tiempo, me las he apañado bien usando 3ds max y maya, pero en un intento de legalizar las cosas, estoy usando Blender, 2.81.16, he aprendido a hacer muchas de las cosas que sabía hacer en el otro lado. También he estado practicando el desarrollo de animaciones, especialmente a crear Inverse Kinematics (IK) bones para crear animaciones que interaccionen con otros objetos. Las dudas me vienen en como importarlo y prepararlo para que funcione con el sistema Mecanim de Unity. Veamos, yo puedo crear un personaje bípedo (imaginemos alguno de Mixamo, con el esqueleto de MIxamo directo) con su animación (¿saltar?) lo guardo en .fbx y lo importo a Unity, ahí puedo convertirlo a Mecanim, así puedo usar esa animación saltar en los otros modelos que también estén adaptados para mecanim. Ahora, estoy haciendo una animación propia en Blender que interacciona con una palanca, para ello he creado unos huesos IK para ayudarme en la animación y hacer que las manos se posicionen a lo largo de la barra, pero estos huesos IK y Constrains, no tienen efecto fuera de Blender, y si se arrastran a Unity, rompen el orden de la jerarquía y fallan para convertirlos en Mecanim. Para exportar la animación con IK de Blender a Unity, tengo que intentar hacer el bake de la animación (de modo que los huesos tengan todos los frames con la rotación guardada) para después poder borrar esos huesos IK de ayuda y exportar el modelo con la jerarquía válida. ¿Sabéis de algún flujo de trabajo más sencillo para esto? Quisiera poder importar las animaciones a unity para usarlas con los mecanims, pero a poder ser de la manera más sencilla posible, (por otro lado, me gustaría poder mantener el rigging IK en el archivo de Blender para poder hacer las animaciones y no tener que ir borrándole para cada vez que quiera exportar).
  2. Hola Didier Luego son tres problemas: 1- El objeto aparece cuando haces click en los bordes de la pantalla. No estoy familiarizado con la función OverlapPoint, pero la cosa es que al buscarla, he observado que no devuelve una variable booleana si no que devuelve un número entero. https://docs.unity3d.com/ScriptReference/Physics2D.OverlapPoint.html int Returns the number of results placed in the results array. Es decir, que lo que devuelve es el número de resultados que encuentra. Esto explicaría porque te genera ese problema. En la línea if(coll.OverlapPoint(click)) Está comprobando si la función OverlapPoint devuelve algo positivo (es decir, distinto de "null" y distinto de 0) entonces la función if la da como válida, pero en la lógica no lo es. Si tu haces click en el lado de la pantalla, o en otro objeto con collider, (aunque haya varios superpuestos), eso debería dar la condición como válida porque el resultado de OverlapPoint sería 1 o más. 2- Al hacer click en la manzana, esta aparece, pero no tiene que ser así. Sólo ha de aparecer una vez que el usuario haya pulsado el botón correspondiente. Esto no es un error de código, lo que pasa es que a tu script le faltan instrucciones para que haga esto. Podrías crear una variable bool (Por ejemplo "bool button= false;" (encima de la función Start, con las otras variables), esta variable bool button podría ser comportarse así. La variable bool button empieza en false. Si se presiona el botón, la variable bool button se pone en true. Si se presiona la manzana, la variable bool button se pone en false otra vez. Luego, cuando hace el click del ratón, pones otra condición if con esa variable bool button, y dentro de ella, (si button es true) entonces haces el chequeo de la manzana. Pero si button es falso (porque no ha pulsado el botón todavía) ignoraría ese código de la búsqueda de la manzana. 3- Al hacer click, afecta varios objetos si estos están en la posición del ratón, y quieres que sólo afecte al 1º. Si vas a usar OverlapPoint, en el manual describe que la función recolecta los resultados encontrados, pero es necesario que crees un array antes para almacenarlos. https://docs.unity3d.com/ScriptReference/Physics2D.OverlapPoint.html public static int OverlapPoint(Vector2 point, ContactFilter2D contactFilter, Collider2D[] results); (El parámetro del final, Collider2D[] results, si pones ahí tu propio array, este se llenará con los resultados cuando llames esta función). Lo que no sé, es en cual extremo del array estaría el objeto "de encima", no sé si es el primer nodo o el último, (imagino que será el primero, el nodo 0, pero bueno, pruébalo con varios objetos para ver si es así).
  3. Hola Hueggvo Yo todavía no he intentado hacer la tienda online, no obstante tengo guardado este tutorial para cuando me vaya a enfrentar a ello: https://learn.unity.com/tutorial/unity-iap Explica como integrar el package In App purchases. Sobre lo que llevas, puedes intentar guardar las compras en player pref, pero eso es un archivo que se guarda localmente en el móvil, si el jugador lo borra (liberando espacio) o cambia de móvil, perdería la información de las compras que haya hecho. Creo que playerpref puede ser útil para guardar la partida, las configuraciones que tenga puesta el jugador (idioma, volumen, y tal), pero para las compras con dinero real, yo no lo usaría. Ese tutorial con el I.A.P. incluye una función para restaurar los consumables que haya comprado el cliente, (nuevamente tengo que ponerlo en práctica para saber más), confío que si estás con las manos en ello, esa información te puede venir bien, ver como lo hacen y tal.
  4. Hola JorgeLi. Yo creo que el script que has compartido, no funcionaría, observando esta línea: script2.GetComponent<GameObject>().Enemigo01; "script2" es el objeto tipo "Script2", quizás este tipo Script2 tenga alguna variable pública tipo llamada "Enemigo01", pero esta línea, esta buscando el componente "GameObject" que hay asociado al objeto script2, y luego está buscando la variable Enemigo01 dentro de la clase Gameobject, el cual no existe. Enemigo01 está dentro la clase Script2, no dentro de la clase GameObject. También, estás intentando acceder a la variable Enemigo01, pero no estás haciendo nada con ella, (no la estás pasando a ninguna variable local ni la estás pasando como parámetro a ninguna función). Has dicho que quieres el script1 (el que has compartido) coja el "GameObject del script2" Pero, luego buscas un "Enemigo01", ¿qué es este Enemigo01? Para coger el GameObject que incluye el el Script2 (referenciado por script2) puedes usar el getcomponent como estabas usando.: GameObject GOrecogido = script2.GetComponent<GameObject>(); Si lo que quieres es coger Enemigo01 (imagino que será una variable tipo GameObject ya inicializada), bastaría con transferirla. GameObject GOrecogido = script2.Enemigo01; Así se podría coger, pero recuerda que las variables locales se eliminan al acabar su dominio, ¿para qué quieres ese "Gameobject del script2"? ¿es algo sólo para esa función o lo usará también otras funciones diferentes a "Enemies()"? ¿es algo para usarlo continuamente o es una información que sólo vas a usar en ese momento puntual? Dependiendo de la respuesta, puede que quieras declarar "GameObject GOrecogido" en un sitio u otro.
  5. Si, la cosa se ve interesante, pero también vi que el tema era del 2017 y no sé si seguirá activo
  6. Nada, llegué al 1º gusano de ojos brillantes, pero me mató. x_x No infravaloraré más a los gusanos XD En fin, creo que sería útil añadir un pequeño mensaje cuando coja cualquier objeto, que le diga qué objeto es. Por ejemplo, con el mando a distancia que no sabía muy bien que objeto había cogido, o la llave a lo mejor con algún nombre o pista de su localización. Puede que parezca que es facilitar el juego, pero pienso que cuando el jugador consigue deducir su próximo paso, continúa la partida más motivado, que yendo puerta por puerta para ver que ha cambiado. Por otro lado, los controles, especialmente el de 3º persona, necesitan refinarse más. Sobre la ambientación, nada más a lo ya dicho, se ve bien y cumple su función. Me encantaron los árboles... *.*
×
×
  • Create New...