ठीक है, मैंने इस बारे में कई लेख, ट्यूटोरियल और प्रश्न पढ़े हैं। अधिकांश उसी तकनीक की ओर इशारा करते हैं जो मेरी समस्या का समाधान नहीं करती है। मुझे अर्ध-पारदर्शी स्प्राइट्स बनाने की क्षमता की आवश्यकता है (बनावट 2 डी वास्तव में) और उन्हें एक और स्प्राइट ओवरले करें।
मुझे लगता है कि कोड नमूने के साथ कुछ हासिल कर सकता हूं, लेकिन मैं परिणामों से संतुष्ट नहीं हूं और मुझे पता है कि ऐसा करने का एक तरीका है। मोबाइल प्रोग्रामिंग (BREW) में हमने इसे पुराना स्कूल किया और वास्तव में रेंडर करने से पहले पारदर्शिता के लिए प्रत्येक पिक्सेल की जाँच की।
इस मामले में यह इसके ऊपर अल्फा के साथ मिश्रित के नीचे स्प्राइट को प्रस्तुत करने के लिए लगता है। यह एक कलाकृति हो सकती है कि मैं किस तरह से बनावट को प्रस्तुत कर रहा हूं लेकिन जैसा कि मैंने पहले कहा था, सभी उदाहरण इस एक तकनीक की ओर इशारा करते हैं। इससे पहले कि मैं आगे जाऊं और मैं अपना उदाहरण कोड पेस्ट करूंगा।
public void Draw(SpriteBatch batch, Camera camera, float alpha)
{
int tileMapWidth = Width;
int tileMapHeight = Height;
batch.Begin(SpriteSortMode.Texture,
BlendState.AlphaBlend,
SamplerState.PointWrap,
DepthStencilState.Default,
RasterizerState.CullNone,
null, camera.TransformMatrix);
for (int x = 0; x < tileMapWidth; x++)
{
for (int y = 0; y < tileMapHeight; y++)
{
int tileIndex = _map[y, x];
if (tileIndex != -1)
{
Texture2D texture = _tileTextures[tileIndex];
batch.Draw(
texture,
new Rectangle(
(x * Engine.TileWidth),
(y * Engine.TileHeight),
Engine.TileWidth,
Engine.TileHeight),
new Color(new Vector4(1f, 1f, 1f, alpha )));
}
}
}
batch.End();
}
जैसा कि आप देख सकते हैं, इस कोड में मैं ओवरलोडेड स्प्राइटबैच का उपयोग कर रहा हूं। बेगिन विधि, जो अन्य चीजों के साथ, एक मिश्रण राज्य है। मैं लगभग सकारात्मक हूँ कि मेरी समस्या है। मैं स्प्राइट्स को ब्लेंड नहीं करना चाहता, मैं चाहता हूं कि जब अल्फा 0. हो तो यह पारदर्शी हो। इस उदाहरण में मैं अल्फा को 0 पर सेट कर सकता हूं, लेकिन यह अभी भी दोनों टाइलों को प्रदान करता है, क्योंकि निचले z को स्प्राइट के माध्यम से दिखाने का आदेश दिया गया है, क्योंकि इसे बंद कर दिया गया है। सम्मिश्रण। यह एक वांछित प्रभाव नहीं है, मैं चाहता हूं कि उच्च जेड-ऑर्डर स्प्राइट को फीका कर दें और इस तरह से नीचे के रंग को प्रभावित न करें।
मैं यहाँ वैसे ही हो सकता हूँ क्योंकि मैं XNA के विकास में काफी नया हूँ इसलिए मुझे लगता है कि मैं गलत खरगोश के छेद से नीचे जा रहा हूँ।
TIA