2012-05-12 16 views
8

मैंने अभी 2 प्लेयर गेम (जैसे आकारगेम) बनाया लेकिन समस्या तब होती है जब खिलाड़ियों में से एक गेम दृश्य से निकलता है, मैं नहीं जानता कि कौन सा एक (कौन सा खिलाड़ी) खेल से छोड़ा गया है ।किनेक्ट एसडीके प्लेयर का पता लगाने

सोचें कि गेम में 2 कारें हैं। पहले पता चला प्लेयर (इसे प्लेयर 1 पर कॉल करें) बाएं एक का उपयोग करता है और प्लेयर 2 सही उपयोग करता है। जब खिलाड़ी 1 ने दृश्य छोड़ा, अचानक खिलाड़ी 2 बाएं कार का नियंत्रण लेता है, और यदि खिलाड़ी 1 गेम को फिर से जोड़ता है, तो खिलाड़ी 1 बाएं कार का नियंत्रण वापस ले लेता है और खिलाड़ी 2 सही कार का नियंत्रण लेता है।

int id = 0; 
foreach (SkeletonData data in skeletonFrame.Skeletons) 
{ 
    if (SkeletonTrackingState.Tracked == data.TrackingState) 
    { 
     // do some work 

     id++; 
    } 
} 

बात कार्यक्रम पहले पता लगाया खिलाड़ी के लिए id = 0 देता है (इसे कहते PLAYER1) दूसरे खिलाड़ी का पता चला और 1 के लिए (यह player2 कहते हैं)। जब खिलाड़ी 2 खेल से निकलता है और फिर से जुड़ जाता है, तो कोई समस्या नहीं होती है। यह फिर से id = 1 लेता है। लेकिन जब खिलाड़ी 1 गेम से lefts, खिलाड़ी 2 id = 0 लेता है क्योंकि यह इस बिंदु पर पहला पता चला खिलाड़ी है।

कोई समाधान?

void nui_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) { 
    SkeletonFrame sf = e.SkeletonFrame; 
    //check which skeletons in array are active and use that array indexes for player index 
    SkeletonData player1 = sf.Skeletons[playerIndex1]; 
    SkeletonData player2 = sf.Skeletons[playerIndex2]; 

आपको लगता है कि सूचकांक का उपयोग कर सकते एक छुट्टी है, तो अपने खिलाड़ियों की पहचान करने और वापस आता है:

उत्तर

3

हर खिलाड़ी कंकाल सरणी में एक सूचकांक है।
लेकिन दोनों खिलाड़ियों को किनेक्ट की दृष्टि छोड़ दें, यह नहीं दिया जाता है कि खिलाड़ी सूचकांक सही है जब वे किनेक्ट दृश्यता में फिर से प्रवेश करते हैं।

संबंधित मुद्दे