Jump to content

Alejandro Navarro

Fosiles
  • Content Count

    19
  • Joined

  • Last visited

Community Reputation

6 Neutral

1 Follower

About Alejandro Navarro

  • Rank
    Iniciado

Profile Information

  • Especialidad
    Coder

Recent Profile Visitors

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

  1. Un trabajo muy chulo, Jav1v1g2. Enhorabuena.
  2. Por aportar mi granito, te recomiendo que crees una clase especial llamada "singleton". Estas clases, como bien dice ProgramacionWH, se definen como DontDestroyOnLoad() para preservar sus datos, como las vidas, los puntos, inventarios... De esta manera, los menus los puedes cargar como quieras, bien desde una escena única con el UI, o bien que cada escena tenga un menú, pero al cambiar entre escenas, seguirás teniendo accesibles los datos. Aquí te dejo un ejemplo de declaración de un Singleton, que deberas asignar a un GameObject Empty: public class GameController : MonoBehaviour { public static GameController instancia = null; public int vidas = 3; public int puntos; void Awake() { if (!instancia) { instancia = this; DontDestroyOnLoad(this); } else Destroy(gameObject); } } Y desde cualquier script de cualquier escena, puedes acceder a los datos de esta manera: if(collision) { GameController.instancia.vidas--; } Espero que te sirva. Un saludo.
  3. Buenas. Otra recomendación que yo te haría, es que uses variables de control para asignar el AnimatorController en un único frame. Según tu código, al estar la condicional en el Update, está comprobando y asignando continuamente 60 veces por segundo... Algo así, solo se cambiaría la animación una única vez en el frame adecuado y no necesitas comprobar limites superiores: int puntosEvolucion = 0; int nivelEvolucion = 0; void Update() { if (puntosEvolucion >= 10 && nivelEvolucion == 0) { nivelEvolucion = 1; _anim.runtimeAnimatorController = _stage2Controller; } if (puntosEvolucion >= 20 && nivelEvolucion == 1) { nivelEvolucion = 2; _anim.runtimeAnimatorController = _stage3Controller; } . . . } Por rizar el rizo, podrías tener las animaciones en un Array (matriz, arreglo, lista...) y puedes asignarlos usando nivelEvolucion como indice y gestionar las animaciones desde el inspector, en vez de desde el cógido. No sé si me explico bien... Espero que te sirva. Un saludo.
  4. Jajaja!! No había leido que era para 2D... No, claro... entonces mejor con Raycast o colliders... Perdón por la metedura de pata.
  5. Y recuerda que también puedes usar los CharacterController para mover personajes, que además tiene una función llamada isGrounded que comprueba automáticamente si el personaje está tocando el suelo. Cualquier opción es igual de buena. Un saludo.
  6. Como dije, no lo probé... ¿Con prefijo confirmas que funciona? Saludos!!
  7. Hola Geniusbat. Creo que intentas hacer una azaña casi imposible... programar sin saber programar. Parece que existe la idea de que se puede hacer un juego con Unity sin saber programar, usando scripts prefabricados de terceros o los que vienen con el propio Unity. Esos scripts vienen muy bien para tareas en concreto, pero rara es la vez que lo usamos sin modificarlos, como te ocurre a tí con el arrastre del controller. Al final, es mas laborioso encontrar un script que te valga que aprender a programar. Te recomiendo que te leas algún libro o tutoriales por internet sobre programación en C#. Si puedes evitar Javascript, mejor. Da una falsa sensación de ser más fácil que C# y a la larga te encontrarás mas limitado. Con que tengas conocimientos básicos, sería un buen momento para hacerte los tutoriales de Unity, que se aprende mucho. De todas formas, creo que tu problema con el arrastre del Character Controller es debido al valor del input del eje vertical. Usando el script que viene con Unity, sin modificarlo, puedes ir a Edit -> Poject Settings -> Input y en el eje Vertical, aumentar el valor de "Gravity", que se encarga de "Frenar" los valores de las teclas cuando sueltas la tecla de avanzar o retroceder, haciendo que se pare en seco. Si lo reduces, conseguirás un efecto de andar sobre hielo. El valor de "Gravity" se mide en metros por segundo. Por defecto, tiene un valor de frenada de 3 metros por segundo. Insisto, te animo que aprendas a programar. Al principio puede parecer dificil, pero enseguida verás que es muy gratificante y podrás sacar juegos comerciales antes de lo que crees. También nos tienes aquí en la comunidad a los "Coders" para ayudarte con tus dudas. Animo. Espero haberte sido de ayuda. Un saludo.
  8. Hola WCR. En el manual de Unity vienen los métodos que te sugiere Miguel_Angel. ¿Lo has probado así?: https://docs.unity3d.com/ScriptReference/Input-inputString.html Nos cuentas tus avances. Un saludo.
  9. Hola Rogorog. La opción que te da musaranya sin duda es la más viable, pero me gustaría resaltarte que si algún día quieres publicar tu aplicación en Google Play, esta store analiza el strings.xml del apk para ver las cadenas de texto y en qué idioma están (incluso te ofrecen un servicio de traducción...). Si utilizas una función o métodos propios para traducir tu aplicación, internamente el strings.xml no tendrá las traducciones de los contenidos de la aplicación y Google entenderá que tu aplicación no es multi-lenguaje. Échale un ojo a https://forum.unity3d.com/threads/add-multiple-language-support-to-your-unity-projects.206271/ y te harás una idea de cómo hacerlo como a Google le gusta, que además es otra opción bastante viable. Por cierto, si que se pueden mezclar clases escritas en Javascript con otras en C#, pero que sepas que Javascript tiene alguna limitación respecto a C# dentro de Unity. Espero que te sirva. Un saludo.
  10. Hola J4v1v1g2. Con la función Application.OpenURL("http://www.google.es"); puedes abrir una página web. Esta función abre el navegador predeterminado que tengas instalado en el móvil, pero dejará tu aplicación en segundo plano. Tengo entendido que con Application.OpenURL("tel://986001002"); se pueden hacer llamadas de teléfono, pero no lo he probado. Ya nos contarás. Un saludo.
  11. Muchas gracias. Ahora, a por el siguiente!!
  12. Muchas gracias. Espero poder aportar todo lo que pueda. Un saludo.
  13. Hola KevinLastra. Si quieres usar el sistema de micropagos de Unity, se llama "In App Purchasing". Tienes que activarlo en la ventana services (Ctrl+0), activando antes "Analytics". Después tienes que importar los plugins para las Stores donde quieras cobrar los micropagos. Aquí te lo explican con tutoriales y ejemplos: https://unity3d.com/es/learn/tutorials/topics/analytics/integrating-unity-iap-your-game Es una tarea un rato ardua, pero espero que te sirva. Un saludo.
  14. Hola Neiro. No lo estás haciendo mal. La mejor manera de cargar y guardar datos es creando una clase serializada con todos los datos que quieras guardar. Hasta ahí bien. Pero creo que el problema que tienes, como te dice la consola, es que estás intentando acceder a una instancia de una clase que no está instanciada. Apostaría a que es el objeto "fecha" de la clase "Fecha". Cuando lo asignas a Calendario, esta clase está correctamente instanciada con new Fecha(); pero "fecha" que lo tienes declarado como public, parece no estar instanciado. ¿Tienes la clase "SaveLoad" asignada como componente de script a algun GameObject?. Deberías ver en el inspector de este GameObject las variables de la clase "Fecha". Prueba a depurar paso a paso y ver en qué línea te salta la excepción... Yo creo que es en la línea 31: "calendario.dia = fecha.dia;" No se si me he explicado... Te adjunto un script que funciona como tu quieres, pero tienes que asociarlo a un GameObject. Nos cuentas!! Un saludo. saveload.cs
  15. !!Que guapo!!... Me gusta mucho. Es muy original. Sigue trabajando en ello, lo veo un exito.
UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...