Controles VR: grip y gatillo en Unity
Clase 15 de 33 • Curso de VR con Unity
Contenido del curso
Creando nuestro mundo 3D en Unity
- 6

Crear terreno 3D en Unity con Standard Assets
08:42 min - 7

Creación de Escenarios en Unity: Terreno y Erosión Realista
10:19 min - 8

Texturización de terrenos en Unity: creación de entornos realistas
10:56 min - 9

Cómo pintar árboles en Unity para VR
06:54 min - 10

Añadir césped y efectos de viento en Unity 3D
06:57 min - 11

Configurar skybox de seis lados en Unity
06:53 min - 12

Integración de Armas y Escudo en Realidad Virtual con HTC Vive
12:09 min
El realismo del VR: Programando a nuestro personaje
- 13

Programación de Lógica de Armas en Realidad Virtual
10:22 min - 14

Mapeado de controles HTC Vive en Unity
10:08 min - 15

Controles VR: grip y gatillo en Unity
Viendo ahora - 16

Configuración de Bolas de Fuego en Unity para Realidad Virtual
09:21 min - 17

Disparo de bola de fuego en VR
10:11 min - 18

Corrección de bugs: recarga y audio en armas Unity
04:44 min - 19

Colliders y Rigidbody en el diseño de personajes y armas en Unity
08:25 min - 20

Sistema de vida reutilizable en Unity
05:23 min
El realismo del VR: Creación de HUD (Heads Up Display) y generando enemigos
- 21

HUD en VR: canvas anclado a cámara
08:50 min - 22

Configuración de Barras de Vida y Maná en Unity
05:54 min - 23

Programación de Daño en Videojuegos: Lógica de Armas y Magia
11:07 min - 24

Slider Unity: vida y maná en un script
08:00 min - 25

Cómo configurar un dragón enemigo en Unity
11:40 min - 26

Colliders y barras de vida para dragones
08:31 min - 27

Animaciones de Muerte y Desaparición de Enemigos en Unity
10:01 min - 28

Cómo crear oleadas de dragones con portal
11:24 min
El realismo del VR: Programando la IA de nuestro juego
La interacción en VR gana vida cuando el control es claro y consistente. Aquí verás cómo en Unity y con controladores HTC Vive se gestionan el gatillo y el grip lateral para cubrirse con el escudo, alternar entre espada y vara y cargar magia en la punta de la vara, usando un cooldown sencillo y el patrón de toggle con SetActive y activeInHierarchy.
¿Qué acciones de input controlan escudo y armas en Unity?
El flujo se apoya en dos botones: el gatillo para cubrirse con el escudo y el grip lateral para mostrar u ocultar armas. Los mapeos de botones provienen del plugin en los input settings de Unity; basta con usar el nombre de cada parámetro y su código de entrada.
- Gatillo izquierdo: cubrirse con el escudo si el escudo está activo en la jerarquía.
- Grip izquierdo: mostrar u ocultar el escudo con cooldown para evitar cambios rápidos.
- Grip derecho: alternar entre espada y vara; si activas la vara, se carga magia.
Ejemplo de la condición del gatillo y el escudo con AND lógico y consulta de jerarquía:
// Variables ilustrativas
bool shieldActive;
GameObject leftWeapon; // Escudo (brazo izquierdo)
bool leftTriggerPressed;
if (leftTriggerPressed && leftWeapon.activeInHierarchy)
{
shieldActive = true;
}
else
{
shieldActive = false;
}
¿Cómo implementar el toggle con cooldown en las armas?
Para mostrar/ocultar armas se usa un toggle: invertir el estado con SetActive(!obj.activeInHierarchy). Además, se aplica un tiempo mínimo de refresco (weapon cooldown) antes de permitir otro cambio. Al cambiar, el contador se reinicia a cero.
¿Cómo se muestra u oculta el escudo con grip izquierdo?
- Dos restricciones: grip izquierdo pulsado AND weaponCooldown > weaponCooldownTime.
- Reiniciar el contador tras el cambio.
- Invertir el estado del escudo con SetActive.
float weaponCooldown;
float weaponCooldownTime;
bool leftGripPressed;
if (leftGripPressed && weaponCooldown > weaponCooldownTime)
{
weaponCooldown = 0f; // Reinicio del cooldown
leftWeapon.SetActive(!leftWeapon.activeInHierarchy);
}
¿Cómo alternar espada y vara con grip derecho?
- Misma lógica de cooldown y toggle aplicada a dos objetos.
- Si la vara queda activa, cargar magia. Si no, destruir la magia actual.
GameObject rightWeapon; // Espada
GameObject rightWeaponAlternative; // Vara
bool rightGripPressed;
GameObject currentMagic; // Magia actual cargada (puede ser null)
if (rightGripPressed && weaponCooldown > weaponCooldownTime)
{
weaponCooldown = 0f;
// Toggle de espada y vara
rightWeapon.SetActive(!rightWeapon.activeInHierarchy);
rightWeaponAlternative.SetActive(!rightWeaponAlternative.activeInHierarchy);
// Si la vara quedó activa, cargar magia; si no, destruirla
if (rightWeaponAlternative.activeInHierarchy)
{
LoadMagic();
}
else
{
if (currentMagic != null) Destroy(currentMagic);
}
}
Puntos clave del patrón:
- AND lógico para combinar botón y cooldown.
- Toggle con !obj.activeInHierarchy.
- Reinicio del cooldown tras cada cambio.
¿Cómo cargar y destruir la magia en la vara?
La magia se gestiona con un prefab (por ejemplo, fireMagic) y una referencia al punto de lanzamiento (magicLaunchPoint). Antes de instanciar, se elimina cualquier magia previa para evitar duplicados. Si todavía no está configurada la magia, es normal ver un error en consola; se resolverá al asignar el prefab correspondiente.
GameObject fireMagic; // Prefab de la magia de fuego
Transform magicLaunchPoint; // Punto de lanzamiento en la punta de la vara
void LoadMagic()
{
if (currentMagic != null)
{
Destroy(currentMagic); // Evitar magias superpuestas
}
// Instancia una nueva magia como hija del punto de lanzamiento
currentMagic = Instantiate(fireMagic, magicLaunchPoint.transform);
}
Conceptos y habilidades trabajadas: - Uso de input settings del plugin para mapear botones. - Evaluación de estado con activeInHierarchy y activación con SetActive. - Control de ritmo con weapon cooldown para evitar cambios excesivos. - Alternancia de objetos (espada/vara) mediante toggle. - Gestión de prefabs con Instantiate y limpieza con Destroy. - Referencias de escena: GameObject y Transform para posicionar la magia en el magic launch point.
¿Te gustaría que profundicemos en el disparo de fuego con el gatillo derecho y efectos visuales de la magia? Deja tus preguntas o ideas y seguimos afinando el sistema.