HoloLens 튜토리얼 (Holograms 101E - 3 Gestures)
소개
「 HoloLens 튜토리얼 (Holograms 101E - 2 Gaze) - Qiita 」의 계속이 됩니다.
"Holograms 101E: Introduction with Emulator"의 "Chapter 3 - Gestures"을 사용해보십시오.
튜토리얼 「Gestures」
GazeGestureManager 만들기
C# 스크립트 작성
C# 스크립트 편집
GazeGestureManager.cs
using UnityEngine;
using UnityEngine.VR.WSA.Input;
public class GazeGestureManager : MonoBehaviour
{
public static GazeGestureManager Instance { get; private set; }
// Represents the hologram that is currently being gazed at.
public GameObject FocusedObject { get; private set; }
GestureRecognizer recognizer;
// Use this for initialization
void Start()
{
Instance = this;
// Set up a GestureRecognizer to detect Select gestures.
recognizer = new GestureRecognizer();
recognizer.TappedEvent += (source, tapCount, ray) =>
{
// Send an OnSelect message to the focused object and its ancestors.
if (FocusedObject != null)
{
FocusedObject.SendMessageUpwards("OnSelect");
}
};
recognizer.StartCapturingGestures();
}
// Update is called once per frame
void Update()
{
// Figure out which hologram is focused this frame.
GameObject oldFocusObject = FocusedObject;
// Do a raycast into the world based on the user's
// head position and orientation.
var headPosition = Camera.main.transform.position;
var gazeDirection = Camera.main.transform.forward;
RaycastHit hitInfo;
if (Physics.Raycast(headPosition, gazeDirection, out hitInfo))
{
// If the raycast hit a hologram, use that as the focused object.
FocusedObject = hitInfo.collider.gameObject;
}
else
{
// If the raycast did not hit a hologram, clear the focused object.
FocusedObject = null;
}
// If the focused object changed this frame,
// start detecting fresh gestures again.
if (FocusedObject != oldFocusObject)
{
recognizer.CancelGestures();
recognizer.StartCapturingGestures();
}
}
}
Manager class with API for recognizing user gestures.
Occurs when a Tap gesture is recognized.
Call to begin receiving gesture events on this recognizer. No events will be received until this method is called.
Cancels any pending gesture events. Additionally this will call StopCapturingGestures.
게임 오브젝트와 부모 (부모, 심지어 부모 ...)에 첨부 된 모든 MonoBehaviour에서 methodName이라는 이름의 메서드를 호출합니다.
ShpereCommands 만들기
C# 스크립트 작성
C# 스크립트 편집
SphereCommands.cs
using UnityEngine;
public class SphereCommands : MonoBehaviour
{
// Called by GazeGestureManager when the user performs a Select gesture
void OnSelect()
{
// If the sphere has no Rigidbody component, add one to enable physics.
if (!this.GetComponent<Rigidbody>())
{
var rigidbody = this.gameObject.AddComponent<Rigidbody>();
rigidbody.collisionDetectionMode = CollisionDetectionMode.Continuous;
}
}
}
Rigidbody를 사용하면 게임 오브젝트를 물리 특성에 의해 제어할 수 있게 됩니다.
Rigidbody 충돌 감지 모드. Rigidbody의 지속적인 충돌 판정을 설정하기 위해서 이것을 사용합니다.
이 모드는 정적 메쉬 지오메트리와 충돌할 때 감지됩니다.
Visual Studio 프로젝트 생성
빌드 및 실행 환경 설정 확인, 실행
에뮬레이터 작동
Gaze의 표시를 Sphere에 맞추고 스페이스 버튼을 누르면 Sphere가 폴로리로 떨어지고 받침대 위를 굴러 받침대에서 떨어집니다.
Reference
이 문제에 관하여(HoloLens 튜토리얼 (Holograms 101E - 3 Gestures)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Suna/items/a8ac90ab53c959faa28c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)