Jump to content
UnitySpain

Aceptamos donaciones vía Paypal.

UnitySpain.com es un servicio gratuito, pero mantener la Comunidad conlleva una serie de gastos.

Fondo Anual Unityspain: Donados 15,00€ de 150,00€

  • Servidor: Dominio.com y Hosting Web
  • Mantenimiento de los Foros
  • Contenido y Servicios Extras
  • Mantenimiento para Redes Sociales

Alex

Registrados
  • Content Count

    109
  • Joined

  • Last visited

  • Days Won

    6

Alex last won the day on January 19

Alex had the most liked content!

Community Reputation

30 Excellent

About Alex

  • Rank
    Asiduo

Profile Information

  • Especialidad
    Coder

Recent Profile Visitors

525 profile views
  1. Hola. - Nombre de la app/juego que quieras sea visible en Google play. - Contacto con el que los usuarios pueden enviar mensajes por si hay fallos (Puede ser un Gmail, o una página en Facebook) - Nombre del desarrollador (Si quieres puedes poner tu nombre o un alías) - Tipo de información que recopilas en tu app (Nombre de usuario, Cookies, localización). Ahora, el tema de las políticas de privacidad es algo en lo que tienes que trabajar mucho, porque el menor error podría hacer que te eliminen la app de la play store o el peor de los casos te caiga una sanción como a Facebook (bueno, al menos no tanto así jaja), trata de hacer un blog (O hasta un documento en Drive sirve) donde describas toda la información que vas a recopilar y como lo usarás, el link lo pegas donde dice "Política de Privacidad", en tu app pon un botón que también lleve hasta ese link y listo. Comúnmente al desarrollar un videojuego no se usa mucha información personal (A menos que tu juego sea un satélite portátil jaja), mayormente se usan las analíticas, gps, correo, o cookies para los anuncios, para ésto no es necesario escribir unas políticas de 5 hojas. Con que dejes en claro que harás y que conseguirás basta. Puedes copiar partes relevantes de las políticas de Unity en torno a anuncios y así fácilmente ya tendrás unas políticas. Aquí un enlace de información: https://forum.unity.com/threads/update-your-privacy-policy-google-removing-games-from-store.558940/
  2. Ahora estoy ocupado y no puedo ver el código muy bien pero, creo que es porque tu script se ejecuta en start (Eso del player =...) Y como dices, tu jugador cambia de tag, puede que este dando el error porque al iniciar el void Start la supuesta linea de "player =.." queda nula porque aún no se a encontrado al "Player". Te recomiendo omitir eso de cambiar el tag en tu script, si estas usando colliders y tienes algo como esto: if (collision = GameObject.tag("Player")) { *Codigo.......* } //Agrega un Else para que no te aviente el error de los enemigos en la consola. else { //Si esta parte está vacía, no te saldrá un error. //Puedes usar un: Debug.Log("no encuentro al jugador"); //Para que te salte el mensaje en la consola } Como te digo, no puedo darte un respuesta clara ahora, pero tu error puede ser por lo del tag.
  3. Primero: Tienes que seguir una secuencia, no solo es poner paneles y ya. Segundo: El tema de la UI es algo en el que se tiene que trabajar mucho para conseguir un buen resultado. Crea primero un Canvas, asignale un panel que encaje en todo el Canvas, este es el espacio que usarás para los elementos UI. Canvas |----PanelGeneral |--- Settings (Panel) |------UI Settings |------ButtonPlay |------ButtonEtc. |---- (Otro) (Panel) |------OtherObject... |------OtherObject2... Hay más opciones para mejorar esto, como los Grid, contentSize etc. Los paneles secundarios que son "Settings, Otro" son los que vas a escalar y pondrás en la posición deseada dentro del "Panel" Primario.
  4. Hola! Es una manera brusca pero tal vez te sirva: El "1f" cambialo por "step" ya que este se va a actualizar en cada frame hasta llegar a 1. public float time; //Juega con este valor para ver los resultados. void Retroceso() { punto_inicial = new Vector3(camara.transform.localEulerAngles.x,camara.transform.localEulerAngles.y); camara.transform.localEulerAngles = new Vector3(camara.transform.localEulerAngles.x - 4f, camara.transform.localEulerAngles.y); // esto es el retroceso en si } StartCoroutine(ActualizaElEstado(Vector3 punto_inicial, float time)); } private IEnumerator ActualizaElEstado(Vector3 punto_inicial, float time) { float inversedTime = 1 / time ; // Puedes cambiar este valor. for( step = 0.0f; step < 1.0f ; step += Time.deltaTime * inversedTime ) { camara.transform.localEulerAngles = Vector3.Lerp(camara.transform.localEulerAngles,punto_inicial, step); yield return WaitForEndOfFrame(); } }
  5. No entiendo muy bien que quieres hacer pero, creo que es como el sistema que se ejecuta al usar el arco en Minecraft jaja (creo). Pues por qué no usas una variable float de velocidad?, Para que no haga ese cambio "brusco" al iniciar el cambio de posición, en vez de ir de 0 a -4 en un solo fotograma, usa la velocidad para que esa variable se actualice a algo como 0, -1, -2, -3 y -4, en un tiempo determinado.
  6. Destrucción combinada con buenos gráficos? estilo voxel? Y recomendada por lightbug? Dónde firmo para pagarlo hasta a plazos jaja
  7. Es para todo el juego. Cada licencia de Unity (Free, Plus o Pro), te regala una cantidad determinada de usuarios que pueden entrar al juego multijugador. Pero si la cantidad de jugadores excede lo gratuito (lo cuál no pasará porque les negarán la conexión), tendrías que pagar los planes mensuales o por gb de tráfico de conexiónes. Ese no es el HLAPI? (Multiplayer nativo de unity?) Porque hace más de un año dijeron que se iba a eliminar de unity, para dar paso a Multiplay.
  8. Buenas Tardes a todos! Hoy al fin el equipo de Google play publicó mi aplicación y hoy vengo a hablares un poco de ella. Lethers en una aplicación que utiliza la realidad aumentada para visualizar archivos 3d, tiene un tutorial al cual se pude acceder deslizando la pantalla hacia arriba en el inicio, el tutorial enseña a como usar los gestos para mover, rotar o escalar el modelo 3d que estés visualizando, a todo aquel que quiera instalarla, les dejo el link. Aún es una beta muy pequeña y hay muchas cosas que tengo y estoy desarrollando, las iré implementando en siguientes versiones. Les agradecería recibir sus comentarios sobre que tal les parece la app. https://play.google.com/store/apps/details?id=com.aphril.lethers
  9. @iRobb inicialmente pensaba en hacer la llamada de importe sea en la misma escena, pero pensando a futuro cuando alguien intente importar un archivo grande, pues sí suena obvio cargarlos antes, de igual forma, sus respuestas me ayudaron a encontrar una solución clara
  10. Gracias por las respuestas @iRobb y @pioj creo que estaría difícil saber las coordenadas de los objetos, porque estos serán importados por el usuario y no se sabrá con exactitud que objetos son los que importarán. Creo que veo conveniente usar mesh Collider, porque si uso box, los colisionadores sobresaldrán de el mesh original y eso hará que al usar Raycast para seleccionar un objeto, no sea preciso. Entonces, como mencioné anteriormente, los usuarios importarán sus modelos 3d y no se puede saber si éste modelo será de pocos objetos o muchos, en caso de que sean muchos, cada uno tendrá que llevar su Collider para poder ser seleccionado con el Raycast, y como es Collider de tipo mesh puede que cause lentitud en la escena mientras se añaden a los objetos. Como podría hacer que esta carga sea fluida? •Se me acaba de ocurrir que antes de instanciar la escena, podría haber un panel de carga y que en este momento todos los meshcollider sean agregados, así el usuario no verá el lag en su escena, si no un panel. Es una buena idea? O mejor que todo sea hecho mientras el usuario interactúa con la escena?
  11. Hay alguna manera de detectar un objeto sin necesidad de agregarle un Collider? En mi proyecto constantemente voy a usar objetos y no quiero agregar a cada uno un mesh Collider ya que algunas veces la cantidad de objetos será enorme y no quisiera que la escena se tilde al agregar todos esos collider por código a cada objeto. Tengo un script que selecciona con ayuda de Raycast, pero éste solo funciona si el objeto tiene un collider. Algo referente sucede al usar el editor de Unity, puedes seleccionar cualquier objeto en la escena y estos muchas veces hasta solo contienen un transform y mesh.
  12. buenas, estoy haciendo que los usuarios se puedan registrar con google authentication junto a firebase, pero llevo realmente mucho con este código, al fin lo hice funcionar, pero al finalizar el registro, voy a la consola de firebase y no me sale el email de los usuarios que se están registrando (cabe recalcar que la aplicación el en celular funciona todo correcto, el usuario si se registra con normalidad, pero el la consola de firebase no sale el email del que se registro) alguna ayuda de que estoy haciendo mal o que me falta? se los agradecería mucho! using Firebase.Auth; using Google; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using System.Threading.Tasks; public class Regist : MonoBehaviour { Firebase.Auth.FirebaseAuth mAuth; Firebase.Auth.FirebaseUser user; Firebase.DependencyStatus dependencyStatus = Firebase.DependencyStatus.UnavailableOther; private GoogleSignInConfiguration configuration; public Text txtSignedUsername; public string WebID = "<WebId>"; void Awake(){ configuration = new GoogleSignInConfiguration { WebClientId = WebID, RequestIdToken = true }; } void Start () { Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => { dependencyStatus = task.Result; if (dependencyStatus == Firebase.DependencyStatus.Available) { InitializeFirebase(); } }); } void InitializeFirebase() { mAuth = Firebase.Auth.FirebaseAuth.DefaultInstance; } public void OnSignIn(){ SignInWithGoogle(); } void SignInWithGoogle() { GoogleSignIn.Configuration = configuration; GoogleSignIn.Configuration.UseGameSignIn = false; GoogleSignIn.Configuration.RequestIdToken = true; GoogleSignIn.DefaultInstance.SignIn().ContinueWith( OnGoogleAuthenticationFinished); } void OnGoogleAuthenticationFinished(Task<GoogleSignInUser> task) { if (task.IsFaulted) { using (IEnumerator<System.Exception> enumerator = task.Exception.InnerExceptions.GetEnumerator()) { if (enumerator.MoveNext()) { GoogleSignIn.SignInException error = (GoogleSignIn.SignInException)enumerator.Current; } else { } } } else if (task.IsCanceled) { } else { Firebase.Auth.Credential credential = Firebase.Auth.GoogleAuthProvider.GetCredential(task.Result.IdToken, null); mAuth.SignInWithCredentialAsync(credential).ContinueWith(t => { if (t.IsCanceled) { return; } if (t.IsFaulted) { return; }else{ } user = mAuth.CurrentUser; txtSignedUsername.text = user.DisplayName; }); } } }
  13. Me ha costado realmente mucho pero al final lo he logrado, le adjunto el código que he editado, para otra persona que se encuentre con el mismo problema: using System.Collections; using System.Collections.Generic; using UnityEngine; public class FollowPlayer : MonoBehaviour { public float speed; public GameObject Jugador; public bool Direccion; void Start(){ //Para evitar el error continuo en la consola al no encontrar al jugador. if(Jugador == null){ Debug.LogWarning("Voy a comenzar a buscar al jugador!"); } } void OnTriggerStay2D(Collider2D collision) { if (collision.gameObject.tag == "Player") { if (collision.gameObject.transform.position.x < transform.position.x) //si el jugador esta a la izquierda: detection = true Direccion = true; //si no esta en la derecha: detection = false else Direccion = false; Invoke("Follow", 0.1f); Jugador = collision.gameObject; } } public void Follow () { //una vez detectado al jugador, el enemigo lo sigue. transform.position = Vector2.MoveTowards(transform.position,Jugador.transform.position, speed * Time.deltaTime); if(Direccion == true){ //gira al enemigo hacia la izquierda. transform.rotation = Quaternion.Euler(Vector3.up * 180f); }else{ //gira al enemigo hacia la derecha. transform.rotation = Quaternion.Euler(Vector3.up * 0f); } } } using System.Collections; using System.Collections.Generic; using UnityEngine; public class FollowPlayer : MonoBehaviour { public float speed; public GameObject Jugador; public bool Direccion; void Start(){ //Para evitar el error continuo en la consola al no encontrar al jugador. if(Jugador == null){ Debug.LogWarning("Voy a comenzar a buscar al jugador!"); } } void OnTriggerStay2D(Collider2D collision) { if (collision.gameObject.tag == "Player") { if (collision.gameObject.transform.position.x < transform.position.x) //si el jugador esta a la izquierda: detection = true Direccion = true; //si no esta en la derecha: detection = false else Direccion = false; Invoke("Follow", 0.1f); Jugador = collision.gameObject; } } public void Follow () { //una vez detectado al jugador, el enemigo lo sigue. transform.position = Vector2.MoveTowards(transform.position,Jugador.transform.position, speed * Time.deltaTime); if(Direccion == true){ //gira al enemigo hacia la izquierda. transform.rotation = Quaternion.Euler(Vector3.up * 180f); }else{ //gira al enemigo hacia la derecha. transform.rotation = Quaternion.Euler(Vector3.up * 0f); } } }
  14. buenas. Estoy desarrollando un juego 2d y tal vez esto suene sencillo para ustedes, pero llevo casi 3 horas intentando hacer que un enemigo gire en el eje Y conforme a la posición donde se encuentre el jugador ( derecha o izquierda) pero lo que he logrado es hacer que el enemigo gire pero en 180 (va girando de poco a poco) en el eje Y, alguien sabe como puedo hacer que gire de un solo golpe de izquierda a derecha y no de poco a poco? using System.Collections; using System.Collections.Generic; using UnityEngine; public class IAEnemy : MonoBehaviour { public float speed; public GameObject iPlayer; public bool Detect; //void OnCollisionEnter2D(Collision2D collision) void OnTriggerStay2D(Collider2D collision) { if (collision.gameObject.tag == "Player") { iPlayer = collision.gameObject; Detect = true; }else { Detect = false; } } void Update(){ if(Detect == true){ Invoke ("IAReady", 0.1f); } //esta es la parte que hace girar al enemigo: Vector3 dir = iPlayer.transform.position - transform.position; float angle = Mathf.Atan2(dir.y,dir.x) * Mathf.Rad2Deg; transform.rotation = Quaternion.AngleAxis(angle, Vector3.up); } public void IAReady () { transform.position = Vector2.MoveTowards(transform.position,iPlayer.transform.position, speed * Time.deltaTime); } }
  15. Buenas! Me preguntaba si en unity se puede hacer para importar un modelo 3d desde la aplicación, eh visto que si es posible pero no recuerdo si la aplicación estaba echa con unity, esta aplicación habría los archivos del dispositivo y permitía buscar y seleccionar el modelo 3d que querías usar, al seleccionarlo, éste se importaba a la app y se podía visualizar, alguien sabe como hacer esto? o donde puedo buscar información para hacerlo?
×
×
  • Create New...