GameLogic representa el componente central de gestión del juego. Recibe todos los eventos dentro del juego y los distribuye a los subsistemas apropiados, reduciendo efectivamente el acoplamiento del código.Transponder adjunto detecta automáticamente la interacción y pasa el evento de acercamiento del jugador al componente GameLogic. En respuesta, UIFactory instancia un panel de UI para la entrada del usuario.GameLogic.TripoClient (Nota: se debe proporcionar una TripoAPIKey válida de antemano).TripoAPI ensambla la solicitud, la envía y comienza a sondear el servidor a intervalos regulares para verificar si hay actualizaciones. Una vez exitoso, el jugador recibe un TaskID para el modelo generado del servidor de Tripo. Este TaskID se utiliza luego para solicitar la generación del esqueleto.TripoAPI devuelve la URL de descarga del modelo a TripoClient. TripoClient luego carga y analiza el modelo en formato GLB a través del plugin glTFfast.RuntimeHumanoidAvatarBuilder se monta en el modelo. Este componente mapea el esqueleto del modelo GLB al sistema Humanoid Avatar de Unity, lo que permite el retargeting de la animación.TripoClient instancia el modelo en la escena. En este punto, los desarrolladores pueden usar los recursos de animación humanoide existentes para controlar el modelo recién generado.GameLogic escucha la entrada del teclado del jugador para alternar dinámicamente el control entre el jugador y el modelo generado. Específicamente, ajusta la prioridad de la cámara y reasigna el objetivo de control del ThirdPersonController.Versión de Unity: 2022.3.55
Ruta del código fuente y las escenas: Assets-LowPoly Environment Pack - Demo - Demo1
Crear un nuevo proyecto
Importar paquetes de recursos necesarios
Abre tu navegador y ve a la Unity Asset Store. Busca y descarga los siguientes paquetes gratuitos (también disponibles en los archivos del proyecto proporcionados):
Añade a Mis Recursos, y en las ventanas emergentes posteriores, haz clic en "Open in Unity" y descarga.
Después de descargar cada paquete, ve a Unity > Assets (en la parte superior del menú de Unity) > Import Package > Custom Package, e impórtalos uno por uno. Haz clic en Import en cada aviso.
Algunos materiales importados pueden aparecer rosados (indicando un problema con el shader). Para convertir:
Opción 1: Instalar vía Git (requiere un entorno Git local)
Opción 2: Descargar desde el sitio web oficial de Tripo, que también incluye el plugin glTFast.
Para configurar tu entorno personalizado:
Navega a: Assets > StarterAsset > ThirdPersonController > Prefabs
Arrastra los siguientes tres prefabs al panel Hierarchy:
La configuración anterior utiliza el script de controlador de tercera persona proporcionado por Unity. En este punto, haz clic en el botón Play en la barra de herramientas de Unity, puedes usar las teclas WASD para controlar el movimiento del personaje. ¡El personaje y la cámara deberían moverse y ajustarse en consecuencia!
Cuando el jugador se acerca a un objeto específico, debe aparecer un panel de entrada de UI. Cuando el jugador se aleja, el panel debe desaparecer.
Transponder y abre el script con Cursor.Por favor, genera un script C# de Unity llamado Transponder que active OnPlayerEnter cuando un GameObject con la etiqueta "player" entra en el collider, y OnPlayerExit cuando el jugador sale.
Haz clic derecho en la escena > Create Empty, renómbralo GameLogicManager (sirve como contenedor de lógica).
GameManager, que manejará la lógica central de la escena.Citamos el componente Transponder y luego escuchamos los eventos cuando los jugadores entran o salen. Las palabras del prompt de referencia son las siguientes:
Por favor, genera un script C# de Unity llamado GameManager que escuche.
Después de guardar el script, arrastra el script GameManager al objeto GameManager y arrastra el componente Transponder al campo Transponder. Esto completa la escucha de eventos de entrada y salida del jugador.
En la jerarquía, haz clic derecho > UI > Panel, para crear un nuevo panel.
Añade 2 componentes hijos bajo el panel:
Ajusta el diseño y el posicionamiento usando la vista de juego como previsualización.
Una vez terminado, arrastra todo el objeto Panel a la carpeta Assets para crear un prefab.
Nota: Si estás usando TextMeshPro, asegúrate de asignar una fuente compatible con el chino, como NotoSansSC SDF, para evitar caracteres cuadrados en el texto.
InputDialog: Manejar la lógica de entradaPrompt de referencia:
ThirdPersonController).Monta el componente InputDialog en el InputDialogPrefab. Arrastra los objetos Text e InputField correspondientes a sus respectivos campos en el componente (Dependencies).
Crea un nuevo script C# llamado UIFactory.
Prompt de referencia:
Este componente actúa como intermediario para desacoplar la lógica de creación de UI del manejo de eventos del juego.
Vuelve a verificar que todas las dependencias de los componentes estén asignadas correctamente.
En el objeto GameManager, asigna:
UIFactory en el objeto GameLogicManager.Pruebas: Haz clic en Play en Unity.
Nota: Nuestro archivo fuente tiene una posición fija para la generación del panel. Modifica este valor de acuerdo con las propiedades de Transform del Trigger que seleccionaste. Alternativamente, puedes configurar el Canvas > RenderMode del prefab de UI en ScreenSpace - Overlay, para que la UI se renderice en el espacio de la pantalla y no entre en el espacio del mundo.
En esta etapa, aún no podemos enviar prompts al servidor de Tripo en tiempo real. Sin embargo, el código necesario para el envío de prompts, las solicitudes de red, la generación de modelos, el rigging de esqueletos, el mapeo, el adaptador y el retargeting de animación ya está listo. Estos scripts se integrarán completamente en el plugin Tripo para Unity en futuras actualizaciones. (Nota: ¡Asegúrate de que exista un sistema UIEvent en tu escena antes de continuar; de lo contrario, la UI no responderá!)
En el panel Project de Unity (normalmente a la izquierda), localiza los archivos fuente TripoClient.cs, TripoAPI.cs y RuntimeHumanoidAvatarBuilder.cs de tu carpeta de descarga.
Aquí está lo que hace cada script:
TripoClient.cs y TripoAPI.cs: Gestionan el envío de prompts y la comunicación de red con el servidor de Tripo.RuntimeHumanoidAvatarBuilder.cs: Mapea el esqueleto del modelo al rig humanoide de Unity usando el plugin GLTFast.TripoClient.cs y TripoAPI.cs representan versiones ligeras del plugin Tripo For Unity pero con funcionalidad de rigging. Continuaremos actualizando y simplificando este proceso en futuras versiones.
TripoClient.cs y TripoAPI.cs a este nuevo objeto para adjuntar los scripts.Dado que hemos actualizado el sistema de entrada del jugador, necesitamos actualizar la lógica de transmisión del prompt en GameManager. Por defecto, el script GameManager ya debería estar escuchando los eventos OnPlayerEnter y OnPlayerExit. Si estás trabajando con código generado por IA o encadenando lógica a través de múltiples componentes, es útil pegar el código generado previamente como contexto.
El script que proporcionamos ya ha definido la función de callback cuando GameManager emite una llamada de instancia a UIFactory. Definitivamente, hay otras soluciones, pero en este caso, el prompt que se puede usar para completar esta parte de la lógica se puede ver de la siguiente manera.
Comportamiento actualizado: En el script GameManager
UIFactory instancia un cuadro de diálogo de entrada (prefab InputDialog).Una vez que el jugador termine de introducir un prompt, se pasará al script TripoClient con un ejemplo de llamada de tripoClient.TextToModel(prompt, pos);. Modifica los scripts asociados.
Modificar GameManager.cs:
Prueba tu configuración
Ahora estás listo para generar tu propio modelo de IA en Unity. ¡Disfruta construyendo!
Una vez que el modelo ha sido generado, el siguiente paso es mapear los recursos de animación existentes al esqueleto de tu modelo. Asegúrate de que el script RuntimeHumanoidAvatarBuilder se haya añadido a tu proyecto. Este script maneja el mapeo del esqueleto GLB humanoide al Avatar de Unity, y el script TripoClient lo montará automáticamente al modelo generado.
Primero, organicemos la estructura y las dependencias del proyecto. Antes de que el juego comience, excepto por los objetos ambientales, los GameObjects personalizados deben estar en el siguiente estado. Expande cada componente de script y asegúrate de que todos los campos estén asignados correctamente. Si encuentras algún problema, compáralos con los archivos fuente para verificar si hay una asignación incorrecta de componentes.
De lo contrario, en nuestra demo, el modelo es un mech de combate, por lo que su propiedad Transform > Scale se amplía diez veces. Esto también se aplica a sus propiedades relacionadas con el Controller.
Selecciona el componente ModelContainer y añade secuencialmente los siguientes componentes (todos proporcionados por el paquete Starter Assets):
En el componente Third Person Controller, establece el campo Camera en la MainCamera de la escena.
Crea un componente vacío como hijo, nómbralo ModelCamera, y añádele un componente CinemachineFreeLook (necesitas importar el plugin Cinemachine, que está incluido en el paquete Starter Assets).
Luego, crea un componente como hijo bajo ModelContainer, nómbralo CameraRoot, y ajusta su coordenada Y a 5 (altura de la cintura del modelo). Asigna los campos Follow y LookAt de ModelCamera a CameraRoot. Ahora la cámara seguirá el movimiento del modelo.
En este punto, el transformador debería reproducir su animación de inactividad, pero aún no puede ser controlado.
Esos componentes: CharacterController, PlayerInput, ThirdPersonController, BasicRigidBody y StarterAssetsInputs, son proporcionados por StarterAssets de Unity y manejan la entrada del jugador. El componente Animator controla la animación, y el Avatar generado por RuntimeHumanoidAvatarBuilder también se asignará automáticamente al campo Avatar del Animator.
Para probar:
Ahora, durante el tiempo de ejecución, el transformador puede ser controlado. El último paso es implementar la lógica para el cambio de control.
Actualiza la siguiente lógica en la función Update de tu script GameLogic:
isLoad indica si el modelo ha sido generado. Si es falso, salta el proceso.isInModel indica si el jugador está controlando actualmente el transformador o al jugador.Al entrar en el transformador:
Al salir del transformador:
Una vez completada la lógica anterior, al presionar la tecla F, el jugador puede entrar y controlar el transformador. Al presionar la tecla F nuevamente, el control vuelve al jugador, mientras el transformador permanece en su lugar, pero el jugador reaparece exactamente en la ubicación del transformador.
En este punto, la demo está funcionalmente completa. Si quieres pulir la experiencia, puedes:
¡Felicitaciones!
¡Gracias por tu arduo trabajo! Ahora has completado toda la demo. Puedes generar y controlar libremente los modelos de transformadores usando tus propias ideas y activos.
¿Necesitas ayuda?
Si encuentras alguna dificultad o tienes comentarios para TripoGame, ¡no dudes en contactarnos a nuestro correo electrónico oficial! tripogame@vastai3d.com. ¡Nos encantaría saber de ti!
Este tutorial está diseñado para demostrar cómo se puede usar la API de Tripo en el juego en tiempo real. El diseño del juego en sí es solo una referencia. Esperamos abordar de manera proactiva los posibles problemas que los desarrolladores puedan encontrar.
Actualmente, la demo solo admite la generación de modelos humanoides debido a los requisitos de rigging. Si la animación aparece anormalmente debido a la inestabilidad de los pesos del esqueleto generados por IA, usa la Avatar Mask para bloquear la animación de las partes del cuerpo problemáticas. Por ejemplo, el archivo fuente ya deshabilita la animación de las manos en el NoArmPerson Controller.
Para una generación más rápida, puedes usar TripoV2/TripoV1Turbo. Simplemente reemplaza el número de versión del modelo "v2.5-20250123" en el script TripoAPI por
Los modelos FBX y GLB tienen diferentes orientaciones, lo que puede provocar problemas de dependencia al importarlos. Si necesitas importar FBX, utiliza plugins como TriLib para cargar el modelo y manejar las adaptaciones correspondientes.
moving at the speed of creativity, achieving the depths of imagination.