Jeux de réalité virtuelle et de ce qui rend votre corps un contrôleur ! (L’unité + Visual Studio + Kinect + Oculus) (9 / 11 étapes)

Étape 9: Commandes manuelles avec le Kinect

Le script suivant, nous allons créer sera celui que nous utilisons dans notre jeu ainsi que le script de gestionnaire de corps. Il détecte l’état de la main et déclencher la rotation pour notre jeu.

Script du gestionnaire de la main

Maintenant, créez un autre script dans le même dossier que le script du gestionnaire corps et corps voir gestionnaire le script. Appelez-le HandManager. Ce script va ressembler beaucoup notre corps vue contrôleur.

Ajouter ce qui suit de BodyView à notre HandManager Script.

à l’aide de UnityEngine ;

à l’aide de System.Collections.

à l’aide de System.Collections.Generic ;

à l’aide de Kinect = Windows.Kinect ;

public class HandManager : MonoBehaviour

{

public GameObject BodyManager ;

Private PlatformRotate platformRotate ;

Private OVRInfinitePlayerController ovrPlayerScript ;

Private InfinitePlayerController playerScript ;

privé _Bodies Dictionary = new Dictionary () ;

Private BodyManager _BodyManager ;

Private float flipTimer ;

Private float flipDelay = 2 ;

int prevState = 0 ;

privé dictionnaire _BoneMap = new Dictionary()

{

{Kinect.JointType.FootLeft, Kinect.JointType.AnkleLeft},

{Kinect.JointType.AnkleLeft, Kinect.JointType.KneeLeft},

{Kinect.JointType.KneeLeft, Kinect.JointType.HipLeft},

{Kinect.JointType.HipLeft, Kinect.JointType.SpineBase},

{Kinect.JointType.FootRight, Kinect.JointType.AnkleRight},

{Kinect.JointType.AnkleRight, Kinect.JointType.KneeRight},

{Kinect.JointType.KneeRight, Kinect.JointType.HipRight},

{Kinect.JointType.HipRight, Kinect.JointType.SpineBase},

{Kinect.JointType.HandTipLeft, Kinect.JointType.HandLeft}, //Need pour HandSates

{Kinect.JointType.ThumbLeft, Kinect.JointType.HandLeft},

{Kinect.JointType.HandLeft, Kinect.JointType.WristLeft},

{Kinect.JointType.WristLeft, Kinect.JointType.ElbowLeft},

{Kinect.JointType.ElbowLeft, Kinect.JointType.ShoulderLeft},

{Kinect.JointType.ShoulderLeft, Kinect.JointType.SpineShoulder},

{Kinect.JointType.HandTipRight, Kinect.JointType.HandRight}, //Needthis pour l’état de la main

{Kinect.JointType.ThumbRight, Kinect.JointType.HandRight},

{Kinect.JointType.HandRight, Kinect.JointType.WristRight},

{Kinect.JointType.WristRight, Kinect.JointType.ElbowRight},

{Kinect.JointType.ElbowRight, Kinect.JointType.ShoulderRight},

{Kinect.JointType.ShoulderRight, Kinect.JointType.SpineShoulder},

{Kinect.JointType.SpineBase, Kinect.JointType.SpineMid},

{Kinect.JointType.SpineMid, Kinect.JointType.SpineShoulder},

{Kinect.JointType.SpineShoulder, Kinect.JointType.Neck},

{Kinect.JointType.Neck, Kinect.JointType.Head},

};

Maintenant, nous avons ajouté une variable qui n’est pas dans notre script bodyview qui est la variable prevState.

int prevState = 0 ;

Nous avons cette variable pour empêcher la rotation constante. Dans les contrôles d’entrée régulières du jeu que nous faisons cela par la seule activation rotation lorsque la clé est qui a été enfoncée, Monte. Avec le Kinect, il est bon d’avoir un état de repos qui doit être atteint si nous voulons faire pivoter ou retourner à nouveau. Dans notre cas, l’état de repos est un état de main qui ne signale pas une rotation ; par exemple, lorsque les deux mains sont dans les poings.

Maintenant dans la méthode de mise à jour, il faut ajouter ce qui suit :

Tout le code ci-dessus est identique à la vue du corps, qui est utile, puisque nous savons déjà comment ça marche.

La seule chose qui est différente est :

Cette variable tiendra l’état actuel de la main, et à la fin de la méthode de mise à jour, nous l’enregistrera dans la variable d’état précédent.

La partie suivante de la méthode de mise à jour qui est différente est dans la boucle foreach.

void Update()

{

État int = 0 ;

Si (BodyManager == null)

{

retour ;

}

_BodyManager = BodyManager.GetComponent () ;

Si (_BodyManager == null)

{

retour ;

}

Données [] Kinect.Body = _BodyManager.GetData() ;

Si (données == null)

{

retour ;

}

Liste trackedIds = gcnew List () ;

foreach (var corps dans les données)

{

Si (corps == null)

{

continuer ;

}

Si (le corps. IsTracked)

{

trackedIds.Add (corps. TrackingId) ;

}

}

KnownIds la liste = new List (_Bodies.Keys) ;

Tout d’abord supprimer les organes non chaînées

foreach (ulong trackingId dans knownIds)

{

Si (! trackedIds.Contains(trackingId))

{

Destroy(_Bodies[trackingId]) ;

_Bodies.Remove(trackingId) ;

}

}

}

Nous devons écrire les méthodes CheckLeftHandState et CheckRIghtHandState. Ces méthodes utilisent le paramètre Kinect.HandState qui équivaut à un énumérable de Lasso, ouvert ou fermé. Les deux renverront int qui nous sera égale à la variable d’État pour indiquer le jeu quelle commande que nous voulons mettre en œuvre.

Initialement, le jeu retourné si deux mains ont été dans l’état de lasso, mais c’est plus difficile à contrôler, car pour une trame une main pourrait être reconnue un peu plus vite que l’autre, et donc le jeu suppose que nous sommes tournant au lieu de retournement.

Alors maintenant le jeu : tourne à droite si la main droite seule est en état de lasso ; tourne à gauche si la main gauche seule est en état de lasso ; et chiquenaudes si la main gauche est ouverte.

Avec les CheckLeftHandState CheckRightHandState méthodes et faits nous pouvons revenir à la méthode de mise à jour et finir le. Actuellement, nous avons juste besoin de voir si le Kinect enregistre nos États main correctement. Pour cela, nous créons une instruction switch qui utilise l’état actuel et puis vérifie ce qui était l’état précédent, empêchant la rotation continue. Si l’état précédent était le réparateur d’État nous tourner, ou dans ce cas imprimer à l’écran de Debug.

OK nous allons donc voir si cela fonctionne. Dans votre scène, créez un autre objet de jeu vide et appelez-le HandManager. Attacher le script handmanager. N’oubliez pas de faire glisser le BodyManager de la hiérarchie à l’espace réservé de BodyManger dans l’inspecteur HandManager.

IMAGE 1

Exécutez le code dans l’unité.

IMAGE 2

OK mais on voit encore le squelette. Eh bien, si nous avons désactiver le bodyView en cochant la case de gauche dans l’inspecteur nous pouvons exécuter à nouveau le projet.

IMAGE 3

BAM ! Il est là, et vous savez que c’est toujours le travail basé sur le débogueur, même si vous ne pouvez plus voir le squelette !

Bon maintenant pour ajouter cela dans le jeu. Première nous allons faire les constructions préfabriquées des objets HandManager et BodyManager.

IMAGE 4

Une fois que vous avez créer drag le chef de corps de la hiérarchie à préfabriqué Body Manager que vous avez créé. Faites de même avec le gestionnaire de la main. Maintenant comme constructions préfabriquées nous pouvons déplacer facilement ces objets et la fonctionnalité dans notre jeu de scène principale !

Articles Liés

Comment faire un écouteur de suivi 3D de réalité virtuelle pour moins de 10$

Comment faire un écouteur de suivi 3D de réalité virtuelle pour moins de 10$

De ces 5 dernières années, les dispositifs de réalité virtuelle plus en plus populaires comme Oculus Rift, carton de Google, Microsoft HoloLens, dominent actuellement le secteur de l'électronique consommateur à tel point qu'ils saisir bien souvent un
Difficulté de n’importe quel contrôleur de jeux vidéo

Difficulté de n’importe quel contrôleur de jeux vidéo

Les jeux vidéo sont génial. L'achat d'un contrôleur de 40-50 $ chaque fois que ce n'est pas quelque chose de petites pauses. Ce Instructable va vous montrer Comment résoudre différents problèmes avec votre télécommande !Utilisez l' organigramme dans
Casque de réalité virtuelle sécurité

Casque de réalité virtuelle sécurité

Porter un casque de réalité virtuelle peut être extrêmement dangereux, surtout si vous êtes à pied (ou en cours d'exécution) à travers des mondes virtuels. Courir dans les murs ou autres objets peut être évité si ce casque de sécurité est usé.En fonc
Initial des réglages de configuration pour casque de réalité virtuelle (VR)

Initial des réglages de configuration pour casque de réalité virtuelle (VR)

J'ai récemment acheté un des nombreux casques de carton de Google « améliorés » peu coûteux. Sur eBay, ces dispositifs ont le prix indiqués dans la même gamme que le véritable carton de Google mais offrent une qualité de construction plus robuste et
Sculpturales machines pour accéder à la réalité virtuelle

Sculpturales machines pour accéder à la réalité virtuelle

Dans ce Instructable que je partagerai une progression des étapes qui ont conduit à la création d'un sculptures fonctionnelles semi pour la visualisation de réalité virtuelle, dont la forme est conçue pour prendre différents rôles selon sa taille exé
Flux de bureau de PC à téléphone pour la réalité virtuelle (maintenant avec tête suivi!)

Flux de bureau de PC à téléphone pour la réalité virtuelle (maintenant avec tête suivi!)

J'ai aimé la réalité virtuelle pendant une longue période. Bien que vous n'aurez pas besoin de l'un, j'ai finalement eu mes mains sur une imprimante 3D et a été en mesure d'imprimer un casque VR.Malheureusement, cela ne vient pas avec toute l'électro
Environnements interactifs de prototypage en réalité virtuelle avec Google carton, l’unité et Hotline Bling (TfCD)

Environnements interactifs de prototypage en réalité virtuelle avec Google carton, l’unité et Hotline Bling (TfCD)

Ces jours-ci, (captivants) sont prioritaires sur la fonctionnalité pure et specs sur papier. Ce changement d'orientation a influé sur le processus de conception des designers industriels, architectes, développeurs d'applications et artistes, s'efforç
Visualiseur de smartphone de réalité virtuelle !

Visualiseur de smartphone de réalité virtuelle !

C'est la « Nuit de construire » à TechShop Chandler, et projet de ce soir est un visualiseur de réalité virtuelle DodoCase...Je dois admettre que lorsque j'ai signé pour cet événement, je n'avais pas la moindre idée quoi je m'embarquais parce que je
Expérience de réalité virtuelle multi-sensorielle

Expérience de réalité virtuelle multi-sensorielle

À l'aide d'invention de 1957 de Morton Heilig, « Sensorama, » comme une source d'inspiration, j'ai développé une plateforme de réalité virtuelle DIY.L'occasion pour 360 degrés d'exploration, il peut sembler étrange au design autour d'une position fix
Devenir Tony Stark : Réalité virtuelle Mobile installation avec mouvement de saut

Devenir Tony Stark : Réalité virtuelle Mobile installation avec mouvement de saut

Combien d'entre vous ont voulu utiliser vos mains et regardez autour naturellement sans avoir à utiliser votre souris, le clavier et l'écran ? Eh bien, aujourd'hui je vais vous montrer comment utiliser un téléphone, Bond en mouvement, et des lunettes
DIY vous réalité virtuelle casque - carton de Google

DIY vous réalité virtuelle casque - carton de Google

À partir du Google i/o admises le carton de Google , j'ai toujours envie pour en obtenir un, à cause de cela est une réalité virtuelle de prix bas appareil sensation. Malheureusement, faute d'acheter un carton de google me rendait fou. J'ai donc déci
Afficher tout contenu Web comme réalité virtuelle

Afficher tout contenu Web comme réalité virtuelle

Il y a eu récemment beaucoup d'excitation autour de la réalité virtuelle et c'est tout car grandes entreprises comme Oculus Rift et périphériques d'entrée comme la tige de Leap Motion, PrioVR, Sixense, ont été la conception de nouveaux et d'expérienc
Réalité virtuelle bricolage Skateboard expérience avec Arduino et Google carton

Réalité virtuelle bricolage Skateboard expérience avec Arduino et Google carton

Il s'agit d'un projet vraiment amusant et facile qui peut être fait en environ une heure. Sur la partie inférieure de la planche à roulettes est un accéléromètre/gyroscope avec une carte Arduino qui transmet le mouvement angulaire du Conseil via blue
Dispositif de réalité virtuelle téléconférence avec un carton de Google

Dispositif de réalité virtuelle téléconférence avec un carton de Google

Dispositif de réalité virtuelle téléconférence avec un carton de GoogleCréé par John Choi | 2015Ce projet est un dispositif de vidéoconférence avec deux webcams de vision stéréoscopique, placé sur une plateforme motorisée 3 axes, contrôlée par un écr