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 0€ de 150,00€

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

francoe1

Registrados
  • Content Count

    774
  • Joined

  • Last visited

  • Days Won

    56

francoe1 last won the day on January 17

francoe1 had the most liked content!

Community Reputation

482 Excellent

About francoe1

  • Rank
    Experto

Profile Information

  • Especialidad
    Coder

Recent Profile Visitors

2,475 profile views
  1. Esto es algo que subí hace unos días a instagram. Para que la cámara funcione correctamente tenes tener múltiples axis disponibles, por lo que la mejor idea es ir anidando la camara. 1 Nivel - Rotación X 2 Nivel - Rotación Y 3 Nivel - Rotación Z 4 Nivel - Retroceso 5 Nivel - Respiración 6 Nivel - Movimientos de Pasos. De esta manera lo resolvi fácil y el movimiento queda fluido, existe otra técnica que es un poco más compleja, pero al final termina realizando los mismo cálculos. Recuerda siempre rotar y mover los niveles en su espacio local.
  2. Para esta práctica necesitas 2 "eventos", MouseUp y MouseDown. private void Update() { if (Input.GetMouseButton(0)) // Si fuera DOWN se ejecutaria 1 vez. De esta menera detecta si el mouse esta siendo presionado. { } if (Input.GetMouseButtonUp(0)) { } } Teniendo esto ahora necesitarás un factor, número del 0 al 1 que será utilizado para multiplicar el valor máximo que desees. Para esto la forma más simple y de alguna manera "segura" es utilizando Time.deltaTime para incrementar una variable. Dentro de el bloque IF del mouse "DOWN". time_amount += Time.deltaTime; Dentro de el bloque IF del mouse UP OnFinishEvent(time_amount); time_amount = 0; La función OnFinishEvent es donde ejecutaras la mecanica necesario, multiplicando time_amount normalizado * el maximo valor permitido.
  3. El "efecto" que estas buscando es el mismo que el de Super Mario 64, lamento comentarte que existen múltiples problemas matemáticos a solventar, primero vamos a diferenciar los dos tipos.. La dirección del jugador en el eje FORWARD es relativa a la camara. La dirección del jugador en el efe FORWARD es absoluta a la camara. En la forma (1) vas a tener que ver la diferencia angular absoluta sobre el eje Y entre la cámara y el jugador. float diff = Mathf.Abs(cam.angle.y - player.angle.y); Teniendo la diferencia puedes crear el comportamiento necesario para compensar la rotación con el movimiento. player.angle.y = Mathf.Lerp(player.angle.y, cam.angle.y, lerp_time); if (diff < 2) MovePlayer(); Esta explicación es la que te dimos anteriormente, a diferencia que se intenta crear un valor "factor" para que la rotación no sea constante. En la forma (2) vas a tener que ver la diferencia angular absoluta sobre el eje Y entre la cámara y el "Joystick Target" - ¿Que es "Joystick target"? Esto es un Vector que predice la posición futura del jugador en función al valor del joystick y la posición actual. Vector3 joystickTarget = player.position + joystick.axis; ¡Importante! - los AXIS del Joystick siempre se deben normalizar, para evitar una velocidad 1.5 en los movimientos diagonales. Ahora deberias tomar la diferencia angular entre el FORWARD del player y el valor de joystickTarget. Vector3 angle_joystick = (josytickTarget - player.position).normalized; Vector3 angle_diff = angle_joystick - player.forward; Y a partir de acá se vuelve a repetir los pasos para la forma (1). Esto no soluciona el problema al 100% en Super Mario 64 la cámara se "AUTO AJUSTA" detrás del jugador mientras este se mueve, por lo cual faltaría la implementación de la compensación de la cámara. ¿Los saltitos de rigidbody solo son perceptibles en la ventana "GAME" o tambien se ven dentro de "INSPECTOR"? Debería de sacarte esta duda por que podria ser un error en el comportamiento de seguimiento de la cámara, tal como para las físicas se utiliza FixedUpdate para la actualización de la posición y rotación de la cámara se recomienda utilizar LateUpdate. Los códigos no funcionan son solo ejemplos.
  4. Se puede deber a. 1º La forma del collider 2º Los materiales de colisión que estén actuando. 3º La masa del objeto. 4º (Sleep mode) La configuración de actualización de físicas. 5º (Interpolate) El modo de interpolación. Muchas variables ....
  5. 1º Deberías evaluar si el proyecto tiene como requerimiento más de 20 CCU. En muchos casos nos preocupa que el CCU sea bajo, pero ¿Realmente se requiere tantos clientes activos?. Si el proyecto tiene mucho potencial te recomiendo implementar una librería de red que te permita desplegar servidores a gusto haciendo uso de los VPS distribuidos de Google Cloud, o bien utilizando un CPU en tu hogar y un servicio SIMÉTRICO de por lo menos 150 MB/s con IP pública estática. 2º ¿Tenes alguna idea de cuantos kb/s por usuario usará la aplicación?. Esto es más importante que el CCU, todos o casi todos los servicios de red tienen un limite en cuanto a kb/s se refiere, y tambien una tarifa. 3º ¿Se definió una estructura para la aplicación? Al definir la estructura de red tendrás referencias para medir el CCU y KB/s necesario. ------------------------------------------ Si tenes ganas de experimentar con librerías de red te dejo en orden (LLAPI -> HLAPI) algunos proyectos Open Sources. Telepathy Librería escrita en C# sobre Sockets TCP con alta eficiencia y rendimiento. https://github.com/vis2k/Telepathy Mirror Librería escrita en C# sobre (Network Drive) con alta eficiencia y rendimiento, se intentó seguir la misma metodología que implementa HLAPI de UNET para que la implementación, migración y aprendizaje sean agradables. https://github.com/vis2k/Mirror Te invito te animes a explorar soluciones propias. Saludos.
  6. Con esto se llevó mi corazón jajaja
  7. Fijate que tengas seleccionada la versión correcta, debajo del título de la página de la documentación.
  8. Muy bien, lo estare probando. Hay muchos pasos, restricciónes y esperas para que admob funcione correctamente, si todo está correcto en unos dias tendras impresiones (15 aprox.) de lo contrario te llegara una notificación a Google Console para solucionar el problema.
  9. 1º Estas muy lejos del camino a seguir. 2º Para los RTS o muchos otros juegos las entidades utilizan Pathfinding, el más simple y utilizado es A* 3º Si vas a utilizar un sistema de tiles no tiene mucho sentido utilizar colisión para todo, dejaría las colisiones para las entidades. 4º Si estas con esta duda es por que aún te falta mucho por aprender... Te recomiendo empezar por algo más simple.
  10. 1º Tomas 2 muestras del ángulo en el eje Y del objeto. BackFrame CurrentFrame 2º Obtener la diferencia absoluta de las muestras Math.Abs(CurrentFrame - BackFrame). 3º Creas tu propia fórmula para obtener un valor del 0 al 1 según el valor de la diferencia. Ejemplo, suponiendo que la diferencia máxima sea 20. 1 - Clamp(diff, 0, 20) / 20 4º Multiplicas la velocidad de movimiento con el resultado del paso 3.
  11. Me referia que esto posteo el 2018 Yo hice unos puntos, todavia estoy esperando que anuncien el ganador. jajaja
  12. IMoveHandler ¿se llama aún cuando no se realiza ningún movimiento?, es decir, se trata de un event ¿before o after?, ¿se puede hacer un "preventDefault()" del evento para que este se marque como utilizado? ¿se puede obtener el contexto del evento o este 'Componente' necesita estar en cada GameObject que requiera el comportamiento? De ser falsa la (3). No sería conveniente utilizar un componente para manejar UI de forma más ordenada. De estar de acuerdo con (4.1) Sería bueno utilizar un Función Update global para todos los "Panel Context" de la interfaz de usuario y al inicio de cada update crear una estructura de evento, es más, creo que esto sería un poco mas optimo que la suscripción de eventos. De todos modos la interfaz de UI de Unity aún tiene mucho trabajo por delante para ser una herramienta útil para el diseño... Habrá que ver en un futuro como se comporta ElementUI. Solo una opinión.... Tendrías que abrir una sección exclusiva "User Interface" y ahí empezar a crear topics de mejores prácticas o ideas para organizar todo, me refiero, estructura, data binding, events, optimizations, contexts... etc...... Saludos!
  13. Hola, bienvenido a la comunidad. 1 - Preséntate como es debido. 2 - Consulta las cosas con respeto e intentando dar mas detalles de tus conocimientos. 3 - Esta pregunta es muy buscada en muchos foros, podrias probar consultar a Google. Tu pregunta no tiene mucha lógica, la única forma de obtener la ubicación del cursor es "Respecto a la cámara". Deberías leer un poco sobre ScreenRayCast y Plane para obtener la información requerida.
  14. Tenia entendido que Addressables es para crear reglas de construcción. Volveré a leer al respecto.
×
×
  • Create New...