Je suis actuellement coincé sur un problème où je souhaite rapprocher / éloigner un gameObject de moi (la caméra HoloLens) lorsque ma main avance / recule. Eh bien, j'ai correctement implémenté la logique pour rapprocher / éloigner l'objet, mais je n'ai pas pu déterminer le mouvement de la main. J'utilise l'interface IManipulationHandler de HoloToolkit pour déplacer l'objet et c'est la logique principale que j'utilise actuellement:
void IManipulationHandler.OnManipulationUpdated(ManipulationEventData eventData)
{
transform.position = Vector3.MoveTowards(objectPosition, cameraPosition,
Vector3.Distance(cameraPosition, eventData.CumulativeDelta));
}
(cela ne fonctionne bien que lorsque je ne change pas de position) p>
Voici une autre logique que j'ai utilisée:
void IManipulationHandler.OnManipulationUpdated(ManipulationEventData eventData)
{
transform.position = Vector3.MoveTowards(objectPosition, cameraPosition,
- (eventData.CumulativeDelta * ManipulationSpeed).z);
}
Selon la logique ci-dessus, chaque fois que je déplace ma main (en avant ou en arrière), l'objet se rapproche toujours, car la distance b / w les deux vecteurs augmentent toujours au début.
Veuillez m'aider avec ce problème. Merci.
Remarque: je veux faire pivoter l'objet lorsque ma main traîne vers la gauche / droite et rapprocher / éloigner l'objet lorsque ma main se déplace vers l'avant / l'arrière.
3 Réponses :
Vous pouvez consulter le script HandDraggable de MixedRealityToolkit.
On dirait que vous utilisez toujours HoloToolkit (maintenant sur le brunch htk_development), vous pouvez en fait utiliser le TwoHandManipulatable pour y parvenir. Sinon, vous devrez peut-être écrire votre propre solveur. Je ne recommande pas aux gens de mettre en œuvre cela à partir de zéro, c'est douloureux.
Avec TwoHandManipulatable.cs , vous pouvez déplacer l'objet dans n'importe quelle direction. Si vous voulez limiter la direction (par exemple uniquement vers la came), vous pouvez remplacer cela dans votre propre classe.
Dans mon application, j'utilise la commande vocale comme second choix des gestes de la main en modifiant les scripts SimpleTagAlong. Ensuite, associez cette action aux mots-clés vocaux "plus proche / plus loin". D'après mon expérience avec les utilisateurs finaux, ils vous remercieront d'avoir la commande vocale.
Ouais, j'ai également utilisé la commande vocale dans mon application. Mais mon superviseur a rejeté cette idée. Ensuite, j'ai utilisé des boutons, qui ont également été rejetés. Il voulait les deux choses d'un seul geste. Eh bien, il a obtenu ce qu'il voulait. Merci
Merci ... Mais mon problème a été résolu lorsque j'ai utilisé l'interface INavigationHandler au lieu de IManipulationHandler. J'ai travaillé comme un charme. Merci encore.