ZigFu的ZDK是做銜接OpenNI和Unity的package。
其中,判斷有沒有偵測到骨架可以從 ZigEngageSingleUser.cs → Zig_Update(ZigInput zig) 中得知。
前提:ZigEngageSingleUser.cs要加到跟Zig.cs同一個gameObject上。
void Zig_Update(ZigInput zig) {
if (SkeletonTracked && null == engagedTrackedUser) {
foreach (ZigTrackedUser trackedUser in zig.TrackedUsers.Values) {
if (trackedUser.SkeletonTracked) {
EngageUser(trackedUser);
// TODO 1
// Ex: 在這記錄被偵測到骨架的使用者id
// 使用者id清掉的時機可以是User離開後,或者在這外面再加判斷(若沒偵測到骨架時)等
}
}
}
}
void EngageUser(ZigTrackedUser user) {
if (null == engagedTrackedUser) {
engagedTrackedUser = user;
foreach (GameObject go in EngagedUsers) user.AddListener(go);
SendMessage("UserEngaged", this, SendMessageOptions.DontRequireReceiver);
// TODO 2
// Ex: 把gameObject加進來或從這邊Find,然後gameObject.SendMessage()
}
}
在TODO的地方就是可以加偵測到骨架時要做的事情, 這邊皆為舉例,做法有很多種。
沒有留言:
張貼留言