Jump to content
UnitySpain

francoe1

Registrados
  • Content Count

    773
  • Joined

  • Last visited

  • Days Won

    56

Everything posted by francoe1

  1. 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.
  2. 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.
  3. 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 ....
  4. 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.
  5. Con esto se llevó mi corazón jajaja
  6. Fijate que tengas seleccionada la versión correcta, debajo del título de la página de la documentación.
  7. 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.
  8. 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.
  9. 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.
  10. Me referia que esto posteo el 2018 Yo hice unos puntos, todavia estoy esperando que anuncien el ganador. jajaja
  11. 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!
  12. 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.
  13. Tenia entendido que Addressables es para crear reglas de construcción. Volveré a leer al respecto.
  14. Este error sucede por que no estas siguiendo un patrón de Datos->Comportamiento. Intenta definir que información es necesaria para guardar, por ejemplo la posición y rotación, luego deberás programar algo que se ajuste a esto.
  15. No es posible realizar la traducción de un juego si este no tiene el soporte para tal, aun pudiendo ver el código y editar las DLL crearían una excepción en la ejecución.
  16. Ya esta disponible la version 2017.1.X en adelante.
  17. Gracias, no me di cuenta de error, suele pasarme jajajaja. El problema fue que Unity entre todas las cosas me pidió un Prefabs para aprobar el asset y yo estaba probando versiones y el ultimo build lo mande con 2019.2, pero es totalmente compatible con las versiones 5.6 en adelante, hace uso únicamente de SpriteRenderer.
  18. https://connect.unity.com/p/spriteanimator-2d-tool Completo sistema para trabajar con Sprite Sheets Visitar en Assets Store https://assetstore.unity.com/packages/tools/sprite-management/spriteanimator-153405
  19. Toma mucho tiempo por la escritura del archivo .log. El problema es que se está utilizando un FileStream esto hace una llamada a GC y un retraso en el ciclo. La solución sería implementar tu propia consola de LOG con un buffer corto y sin un log persistente.
  20. Los scripts deben tener el mismo nombre que la clase. MIScript.cs public classs MiScrpt : MonoBehaviour {} Se deben respetar las mayúsculas y minúsculas y no debe contener espacios..
  21. Podrias crear una extensión de MonoBehaviour public abstract class GameBehaviour : MonoBehaviour { protected abstract void OnAwake(); protected abstract void OnStart(); protected abstract void OnUpdate(); private static List<GameBehaviour> m_instances = new List<GameBehaviour>(); private void Awake() { m_instances.Add(this); OnAwake(); } private void Start() { OnStart(); } // o utilizar OnDestroy() ~ GameBehaviour() { m_instances.Remove(this); } public static void UpdateBehaviour() { for(int i = 0; i < m_instances.count; i++) { if(m_instances[i] == null) { m_instances.RemoveAt(i); continue; } m_instances[i].OnUpdate(); } } } Tendrías que llamar desde tu GameManager a GameBehaviour.UpdateBehaviour() y tendrias todos los Game Behaviours en 1 solo update.
  22. Depende como lo hayan integrado al componente, fijate si en la carpeta de CKE no tiene un config.js por lo general la configuración está ahí.
  23. https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-codeSnippet_languages
×
×
  • Create New...