2013年10月1日 星期二

[Unity3D] ZigFu Skeleton Detect 偵測骨架 (ZDK_Unity40_1.1)


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的地方就是可以加偵測到骨架時要做的事情, 這邊皆為舉例,做法有很多種。



沒有留言:

張貼留言