在Unity3D中使用Zigfu,如何檢查武器是否擡起?檢查武器是否擡起Zigfu和Unity3D
3
A
回答
3
我不熟悉Zigfu,但是如果還沒有一個後端機制來測試這個事實(因爲George Profenza在評論中指出),那麼你可以輕鬆地推出自己的測試來測試這種情況。
每個Kinect API(官方或第三方)都有關於骨架關節的細分。 official API將骨骼分解爲以下關節,並且我相信NITE會將骨骼分解爲相同的關節。
您可以測試與另一關節的位置的一個關節的位置,看看你的「武器提出了」條件得到滿足。
例如,你可以簡單地檢查,如果玩家的肘部他們的肩膀上面:
private void OnSkeletonFrameReady()
{
if ((JointId[ElbowRight].Y > JointId[ShoulderRight].Y) &&
(JointId[ElbowLeft].Y > JointId[ShoulderLeft].Y)
{
// arms have been raised
}
}
這顯然是僞代碼,這將需要更新的API Zigfu引用。
滾動自己的優勢(與使用可能已定義的內容相比)是可以決定「舉起手臂」的含義。
- 只是雙手需要在肩膀上方嗎?
- 雙手肘部需要在肩膀上方嗎?
- 做手只需要在
HipCenter
或Spine
以上聯合? - 必須延長手臂,還是可以彎曲肘部?
所有其他那些(和更多)可以被定義爲「舉起手臂」。可以對接頭的配置進行測試以確定它們是否屬實。
如果您想確認玩家在識別狀態之前保持「舉起手臂」一段時間,您可以簡單地爲手勢檢查添加一個計時器。僞碼的例子是:
DispatherTimer _gestureTimer = new DispatcherTimer();
_gestureTimer.Interval = TimeSpan.FromSeconds(5);
_gestureTimer.Tick += OnGestureTimerTick();
bool _armsRaisedFlag = false;
private void OnSkeletonFrameReady()
{
if ((JointId[ElbowRight].Y > JointId[ShoulderRight].Y) &&
(JointId[ElbowLeft].Y > JointId[ShoulderLeft].Y)
{
_argsRaisedFlag = true;
_gestureTimer.Start();
}
else
{
_armsRaisedFlag = false;
_gestureTimer.Stop();
}
}
private void OnGestureTimerTick()
{
_gestureTimer.Stop();
if (_armsRaisedFlag == true)
{
// player's arms have been raised long enough for gesture to pass
}
}
在這種情況下,「臂提出了」每次條件滿足一個標誌被設置和啓動定時器。如果玩家將手臂擡起5秒鐘,則條件得到滿足,您可以執行所需的操作。
1
它的sipmle,只是贊成ZigSkeleton文件。
在ZigSkeleton文件,創建一個varialbe存儲肩的ID
public int TrackedLeftArm = (int)ZigJointId.LeftArm;
而在UpdateRotation功能,
Quaternion newRotation = transform.rotation * orientation * initialRotations[(int)joint];
現在檢查
if((int)joint==TrackedLeftArm)
{
if(newRotation.x> DesiredANgle)
Debug.Log("Hands raised");
}
相關問題
- 1. 實施武器依賴(單位/武器/彈丸/彈頭)[Unity3D C#]
- 2. iOS:檢測touchEnded是否滑落屏幕或擡起手指?
- 3. Core-Motion/accelerometer:檢測iPad的一邊是否擡起
- 4. 扶手板擡起
- 5. 檢查選擇器是否
- 6. 檢查對象是否完全通過另一個對象Unity3d
- 7. 檢查unity3D中是否提供SMS(ios,android)
- 8. Unity3d檢查用戶是否已授權設備攝像頭
- 9. Unity3D檢查一個點是否在遊戲對象內
- 10. Unity3D C#檢查,如果事件是空
- 11. 擡起默認的錯誤on_delete和Django
- 12. 調用touchesEnd後touchesMoved和擡起手指
- 13. hitesting的武器
- 14. 切換武器
- 15. Unity3d和vuforia檢測目標是否出現
- 16. 如何檢查是否與更改監聽器一起檢查複選框
- 17. Android touchEvent:移動時擡起
- 18. 擡起SystemExit不工作
- 19. 擡起的脊椎視圖
- 20. 檢查使用ngcheck檢查複選框是否不起作用
- 21. 檢查Tomcat服務器是否從C#升起
- 22. 檢查接收器是否拿起了電話
- 23. (Unity)武器開關,在開關後摧毀以前的武器
- 24. 檢查是否有
- 25. 檢查CSS選擇器是否有效
- 26. 檢查websocket服務器是否關閉
- 27. Ruby - 檢查控制器是否定義
- 28. 滑軌檢查是否在控制器
- 29. 檢查node.js服務器是否在線?
- 30. Javascript:檢查服務器是否在線?
有不在Unity3D中使用Zigfu,但我認爲它在幕後使用了OpenNI/NITE,並且在NIT中定義了「手臂擡起」手勢Ë – 2013-02-11 10:42:25