Jump to content

AngelFG

Registrados
  • Content Count

    31
  • Joined

  • Last visited

  • Days Won

    2

AngelFG last won the day on May 31

AngelFG had the most liked content!

Community Reputation

15 Good

About AngelFG

  • Rank
    Usuario

Profile Information

  • Especialidad
    Coder

Recent Profile Visitors

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

  1. Buenas. Yo acabo de hacer la prueba y a mi me funciona bien. Deja de hacer la animación y cae.... ¿ Estás seguro que los cubos no tienen la animación ?
  2. Si. Parece que es de pago. Ese ya lo había visto.... Gracias por el aporte.
  3. Buenas. Estoy empezando a investigar sobre AR y después de ver las especificaciones de diversos SDK´s me he decantado por aprender AR Foundation. Tengo la esperanza de que en un futuro, no muy lejano, implementen todas las funcionalidades de las HoloLens2 y por lo que veo, a parte de ser gratuita, permite el desarrollo de aplicaciones para múltiples devices sin necesidad de cambiar el código. Ahora tengo el problema de buscar emuladores que permiten realizar pruebas con dicho entorno (AR Foundation) y que no tenga que emplear un dispositivo físico (por lo menos al principio, para ir programando lo básico). Mirando las especificaciones de ARCore (https://developers.google.com/ar/discover/supported-devices) se indica que es posible emplear un emulador Google API 27 basado en x86 o x64. El problema que me estoy encontrando es que Unity, en su versión 2019 ya no genera el código para x86 o x64 y sólo lo genera para arm. ¿ Sabéis de algún emulador que se pueda utilizar ? PD: Ya sé que existe un emulador para Hololens2, de hecho lo he instalado y corriendo, pero a parte que para hacer pruebas es necesario hacer dos pasos (generar en Unity y cargar en VStudio el proyecto) me come toda la CPU de mi ordenador, por eso estoy buscando alternativas que consuman menos recursos. Un saludo y gracias de antemano.
  4. Gracias por las correcciones. Siempre se aprende. En la solución que doy yo es verdad que se puede modificar el contenido de la lista desde cualquier parte. Simplemente comentarte que la solución que das tú lleva un error (mira el mensaje de quien inició el hilo). Yo puse 'una posible mala solución' que no la única. ¿ Podría valer esta ? private static List<Enemy> m_instanceEnemys { get; set; } = new List<Enemy>(); public static ReadOnlyCollection<Enemy> Instances { get { return m_instanceEnemys.AsReadOnly(); } } Aunque no es parte del hilo, podría 'abusar' de tu conocimiento y me podrías aconsejar sobre lo siguiente: En lo de no llevar la gestión de los enemigos a un 'GameController' dices que es un error. ¿ Me podrías confirmar si llevarlo a un GameObject que lleve asociado un script con dicha gestión es lo adecuado ?. Estoy acostumbrado a decir que todo se lleva el GameController ya que vengo de Libgdx y es desde dicha clase desde donde se gestiona (llama) al resto de métodos que controlan el comportamiento del juego. Por otro lado, ¿ no consideras que el uso de variables public static es un recurso que se debiera evitar ? En este caso, ¿ no sería más lógico tener una clase de GestionEnemigos (la que digo como GameController) en la que se encuentre definidos los métodos add(Enemigo) y remove(Enemigo) y cuya lista sea privada y de instancia y dicha clase lleve la gestión de cómo deben comportarse los enemigos en función de su número como preguntaba nomoregames ? Un saludo y gracias por compartir tu conocimiento.
  5. Esa Instances entiendo que está definida para restringir el acceso a m_instanceEnemys y que desde 'fuera' de la clase no se pueda modificar. Para solucionar ese error tienes la opción de: public static ReadOnlyCollection<string> Instances { get { return new ReadOnlyCollection<Enemy>(m_instanceEnemys); } } que no la veo muy óptima ya que crea una nueva colección cada vez que accedes a Instances. Yo pondría la opción: public static List<Enemy> m_instanceEnemys { get; private set; } = new List<Enemy>(); y de esta forma también proteges de cambiar la lista desde otro sitio. Ahora sólo trabajas con Enemy.m_instanceEnemys. Podrías cambiar el nombre. Yo que conste que soy más de llevar esto (el arrray) a la clase controladora (GameController) y gestionarlo desde allí....
  6. Ya lo comenté en un post anterior, pero si no lo viste, puedes mirar este curso que he puesto para los alumnos de ciclos de FP: https://wiki.cifprodolfoucha.es/index.php?title=Prog._Fundamentos_Programación_Orientada_a_Objetos_(POO) https://wiki.cifprodolfoucha.es/index.php?title=Prog._Aprendiendo_POO Es una parte de un curso más completo: https://wiki.cifprodolfoucha.es/index.php?title=Programación_Java Parte de la base que ya sabes crear proyectos con NetBeans (esa parte la damos en clase).
  7. Si comentas la línea anim.SetTrigger("Hurt"); Supongo que te puedes mover ? Si es así, una opción que se me ocurre es que estés permanentemente ejecutando la animación de Hurt y como es de tipo trigger... Por eso te comentaba lo de la máquina de estados en ejecución....Si después de PlayerHurt pasas a Player Idle o se mantiene siempre en PlayerHurt....
  8. Al ejecutar el juego puedes ver en 'tiempo real' el AnimatorController para ver en qué estado te encuentras y puedes modificar los parámetros mientras estás en ejecución.... ¿ Lo comprobaste para ver si te da alguna pista ?
  9. Por si quieres mirarlo para un futuro, yo he creado un curso de POO. A lo mejor te ayuda en algo: https://wiki.cifprodolfoucha.es/index.php?title=Prog._Fundamentos_Programación_Orientada_a_Objetos_(POO) https://wiki.cifprodolfoucha.es/index.php?title=Prog._Aprendiendo_POO
  10. Buenas. No sé a que te refieres con el problema de 'animación pegado a la pared'. Yo lo que hago cuando tengo varias animaciones y ya tienes el AnimatorController con los diferentes estados (animaciones) es utilizar como parámetro la velocidad a la que se mueve el personaje (una propiedad de tipo float dentro del script). Paso el valor de dicha variable al animator y el AnimatorController pasa de un estado a otro (parado, andando, corriendo) en función de la velocidad.
  11. AngelFG

    XML guardar datos

    Buenas. El problema lo tienes (si no me equivoco) en que cuando guardas el archivo de puntuaciones para Android lo haces en la ruta Application.persistentDataPath : https://docs.unity3d.com/ScriptReference/Application-persistentDataPath.html que se corresponde con /storage/sdcard/Android/data/com.prueba.es/files/ Pero cuando lo lees, lo sigues leyendo de Resources.Load, por lo tanto vuelves a leer el archivo original.Por lo tanto sólo te va a guardar el último. Si sabes de Android y manejas el Android Studio, puedes crear un emulador y exportar el proyecto de Unity a un proyecto Android y desde el Android Studio puedes acceder al amulador y acceder a sus carpetas para ver lo que se crea....(https://klevshova.wordpress.com/2017/02/24/how-to-test-unity-app-for-android-platform-in-emulator-in-android-studio/) PD: Yo haciendo pruebas tuve que crear a mano el directorio Resources en la tarjeta SD de Android, ya que no existe inicialmente. Supongo que tú ya lo tienes creado previamente pero no se muestra en tu código.
  12. Si el objeto es 2D (de tipo UI) puedes utilizar el componente Event Trigger. Una vez añadido, debes de coger el tipo de evento pulsando el botón Add New Event Type (en tu caso puede ser Pointer Down). Una vez añadido el tipo de evento, debes de pulsar el botón + y arrastrar un GameObject con un script asociado y una función a la cual quieras llamar cuando se pulse. Dicha función puede llevar parámetros y aquí pondrías el valor de dichos parámetros. Si el objeto es 3D, la única forma que yo conozco es la de utilizar un rayo que viene a ser como un vector que va desde el sitio donde pulsas sobre la pantalla y dirección hacia el interior de la misma, capturando los puntos de intersección con los GameObjects que haya en su camino. Tienes un ejemplo de uso en este enlace
  13. AngelFG

    ANSWERED IA

    Prueba a poner el código que está comentado como NUEVO a ver si te funciona....
  14. AngelFG

    ANSWERED IA

    Además, mi consejo es que mires como realizar el movimiento de cuerpos con RigidBody en los que no se emplea el componente transform. Si quieres mover por transform (como tienes en el ejemplo) lo normal es que utilices el transform.forward de los GameObjects para que se muevan hacia adelante, multiplicando por la velocidad y TIme.deltaTime de la forma: transform.position += transform.forward* velocidad * Time.deltaTime; o bien con transform.Translate. Tienes en este enlace para qué es necesario Time.deltaTIme. Si quieres dirigirlos hacia un destino, necesitas lo que yo llamo 'vector dirección', y creo que se llama así. Puedes comprobar como funciona en este enlace. El componente NavMesh de Unity está genial para darle 'inteligencia' a los enemigos ya que puedes hacer que se dirijan hacia un punto (normalmente contra el jugador) esquivando los obstáculos que haya por el medio.
  15. Pon un punto de ruptura y ejecuta en modo Debugger o puedes poner Debug.Log("Texto"); y te saldrá en la ventana Console de Unity. Si lo que quieres es hacer una programación en caso de que se ejecute StopMouse puedes emplear una variable booleana y la pones a true cuando entres en el método.
UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...