这是我的问题 我正在使用深度控制,但现在我有不同的精灵,需要不同的混合状态 如果我已经启动了spritebatch.begin(...)
,我该如何改变呢?我试图更改spritebatch.graphicsDevice.blendstate但它似乎没有工作
我无法将黑色区域变为透明度
谢谢
似乎仍无法使用该代码保存它们之间的图层顺序...
我想问题可能在于使用object.draw(spritebatch)然后在方法内部绘制
我认为这是一个问题,因为我有两个类,每个类都有一个带有输入spritebatch的draw方法
这就是我在做什么
spriteBatch.Begin(SpriteSortMode.FrontToBack,BlendState.Additive);
d.drawAttack(gameTime,spriteBatch);
spriteBatch.End();
spriteBatch.Begin(SpriteSortMode.FrontToBack,BlendState.AlphaBlend);
drawObjects(gameTime,spriteBatch);
charactersDraw(gameTime,spriteBatch); //与d.drawAttack相同的类
spriteBatch.End();
他们都画了但是层!在两个spritebatche之间!似乎没有任何区别
layerdepth适用于字符和绘制对象...仅适用于drawAttack
答案 0 :(得分:0)
你需要做多个SpriteBatch.Begin().. End()调用,each with a different BlendState。您仍然可以在其中保留layerDepth。
例如:
batch.Begin(SpriteSortMode.FrontToBack, BlendState.Additive);
batch.Draw(tex1, sprite1, null, Color.White, 0.0f, Vector2.Zero, 1.0f,
SpriteEffects.None, layer1);
batch.Draw(tex2, sprite2, null, Color.White, 0.0f, Vector2.Zero, 1.0f,
SpriteEffects.None, layer2);
batch.End();
//new blend state, new begin...end
batch.Begin(SpriteSortMode.FrontToBack, BlendState.AlphaBlend);
batch.Draw(tex3, sprite3, null, Color.White, 0.0f, Vector2.Zero, 1.0f,
SpriteEffects.None, layer3);
batch.Draw(tex4, sprite4, null, Color.White, 0.0f, Vector2.Zero, 1.0f,
SpriteEffects.None, layer4);
batch.End();