This is an old revision of the document!
Table of Contents
tags: unity openai
Referencias:
Añadir pantallas de texto a la visión
Primero añadimos dos pantallas, que será una de entrada y otra de salida que se moverán con nuestra vista y que las podemos esconcer pulsando el botón A
Creamos dos pantallas de Texto. Una de texto de entrada y otra de texto de Salida. Creamos dos GameObjects y los colgamos de “Main Camera” de nuestro jugador. Si queremos quitar las dos a la vez lo ponemos dentro de otro GameObject que he llamado Pantalla. Asignamos un “TextMeshPro - Text” a cada gameobject.
Script para que aparezca la pantalla si dejo pulsado el botón A del mando derecho:
using UnityEngine;
using UnityEngine.XR;
using TMPro;
public class Botones : MonoBehaviour
{
private InputDevice oculusController;
private bool primaryButtonPressed = false;
[SerializeField] private GameObject Pantallas;
void Start()
{
// Get the input device for the Right hand
oculusController = InputDevices.GetDeviceAtXRNode(XRNode.RightHand);
}
void Update()
{
// Check if the primary button A is pressed
if (oculusController.TryGetFeatureValue(CommonUsages.primaryButton, out bool primaryButtonValue) && primaryButtonValue && !primaryButtonPressed)
{
primaryButtonPressed = true;
Debug.Log("button pressed");
Pantallas.SetActive(true);
}
// Check if the primary button A is released
if (oculusController.TryGetFeatureValue(CommonUsages.primaryButton, out bool newPrimaryButtonValue) && !newPrimaryButtonValue && primaryButtonPressed)
{
primaryButtonPressed = false;
Debug.Log("button released");
Pantallas.SetActive(false);
}
}
}
Poner y quitas con un click:
using UnityEngine;
using UnityEngine.XR;
using TMPro;
public class Botones : MonoBehaviour
{
private InputDevice oculusController;
private bool primaryButtonPressed = false;
[SerializeField] private GameObject Pantallas;
int i=0;
void Start()
{
// Get the input device for the Right hand
oculusController = InputDevices.GetDeviceAtXRNode(XRNode.RightHand);
}
void Update()
{
// Check if the primary button A is pressed
if (oculusController.TryGetFeatureValue(CommonUsages.primaryButton, out bool primaryButtonValue) && primaryButtonValue && !primaryButtonPressed)
{
primaryButtonPressed = true;
Debug.Log("button pressed");
Pantallas.SetActive(true);
}
// Check if the primary button A is released
if (oculusController.TryGetFeatureValue(CommonUsages.primaryButton, out bool newPrimaryButtonValue) && !newPrimaryButtonValue && primaryButtonPressed)
{
primaryButtonPressed = false;
Debug.Log("button released");
if ( i==0)
{
i=1;
} else {
Pantallas.SetActive(false);
i=0;
}
}
}
}
Speech to Text
Instalación de Speech to text. Asset de unityStore que cuesta 49.89€ (no es dinero)
https://assetstore.unity.com/packages/tools/audio/speech-recognition-system-187171
Descargamos el modelo de lenguaje “Spanish” está en el fichero de documentación y es un enlace a Google Drive (*investigar para conseguir el original que creo que es de Apache*)
Copiamos el directorio en Assets/StreamingAssets/SpeechRecognitionSystem/model/spanish
Nos aparece en nuestros assets como “Speech Recognition System”
Creamos dos GameObjects:
Reconocimiento Microfono
Y les asignamos los scripts: “SpeechRecognizer” y “Audio recorder”
Reconocimiento -> Script "SpeechRecognizer" Microfono -> Script "Audio recorder"
Configuramos así el script AudioRecorder: le asignamos el GameObject de Reconocimiento y seleccionamos la función “SpeechRecognizer.OnDataProviderReady”
En el GameObject de Reconocimiento, cambiamos en el Script el modelo a Spanish y que la salida sea la pantalla de Entrada.
Openai
Instalamos el Asset de openai desde el repositorio de GIT. Vamos a “Window > Package Manager” y pulsamos en el + y seleccionamos “Add Package from git URL…”
Introducimos la URL que es:
https://github.com/srcnalt/OpenAI-Unity.git
A la derecha importamos los ejemplos:
Nos aparecerá en “Samples > OpenAI Unity > 0.1.6 > ChatGPT” Aquí creamos un GameObject que se llame ChatGPT y añadimos el script y lo modificamos.
En la línea
private OpenAIApi openai = new OpenAIApi();
Introducimos nuestra API_KEY de openai:
private OpenAIApi openai = new OpenAIApi(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);






