2012-06-01 35 views
6

मैं जेड समन्वय का उपयोग कर 3 डी में एक कण प्रभाव प्रस्तुत करना चाहता हूं। मैंने सफलता के बिना स्प्राइट्स के बजाय Decals का उपयोग करके अपने स्वयं के particicleEffect को लागू करने का प्रयास किया है।libgdx कण प्रणाली जेड समन्वय

क्या ज़ेड समन्वय का उपयोग करके particicleEffect प्रस्तुत करने का कोई अन्य तरीका है? शायद SpriteBatch के परिवर्तन मैट्रिक्स में हेरफेर करके?

अद्यतन:

काम कर कोड

// update projection each frame since my camera is moving 
spriteBatch.setProjectionMatrix(camera3d.projection); 

for (ParticleEffect effect : effects){ 
    spriteBatch.setTransformMatrix(camera3d.view); 
    spriteBatch.getTransformMatrix().translate(x,y,z); // different for each effect 
    spriteBatch.getTransformMatrix().scale(0.1f,0.1f,0.1f); //optional 
    spriteBatch.begin(); 

    effect.draw(spriteBatch, delta); 

    spriteBatch.end(); 
    spriteBatch.getTransformMatrix().idt(); 
} 
+0

क्या आपका गेम 2 डी या 3 डी है? "जेड समन्वय का उपयोग" का क्या अर्थ है? कि कण स्क्रीन पर विभिन्न आकारों में प्रस्तुत करते हैं? क्या आप अपने पास क्या स्क्रीनशॉट दिखा सकते हैं? –

+0

मेरा गेम 3 डी है, लेकिन libgdx का particicleEffect 2 डी के लिए है (केवल एक्स और वाई, कोई जेड का उपयोग नहीं करता है) क्योंकि यह ड्राइंग के लिए स्प्राइट्स (2 डी) आंतरिक रूप से और स्प्राइटबैच का उपयोग करता है। मैं चाहता हूं कि प्रभाव आंशिक रूप से निकट वस्तुओं के पीछे और परिप्रेक्ष्य के संबंध में दूर वस्तुओं के सामने दिखाई दे। – kromit

उत्तर

9

अपने 3 डी प्रभाव एक लंबन प्रभाव है, जिसका अर्थ है अपने कणों कैमरा perpendicularily सामना करते हैं, आप वास्तव में SpriteBatch

के परिवर्तन मैट्रिक्स सेट कर सकते हैं
batch.getTransformMatrix().idt().translate(0, 0, z); 
batch.begin(); 
... do your rendering here 
batch.end(); 
// reset the matrix, so you can use the batch for other stuff 
batch.idt(); 

परिप्रेक्ष्य प्रभाव के लिए आपको परिप्रेक्ष्य प्रक्षेपण का भी उपयोग करना होगा। इस आवश्यकता से निपटने का सबसे आसान तरीका ऑर्थोग्राफिक कैमरे के बजाय एक पर्स्पेक्टिव कैमरे का उपयोग करना है।

+0

धन्यवाद, वह अंतिम संकेत था! मैंने प्रश्न कोड के साथ प्रश्न अद्यतन किया है। रास्ते में libgdx के लिए धन्यवाद! – kromit