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