XNA如何使xna不能读取透明颜色

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XNA如何使xna不能读取透明颜色相关的知识,希望对你有一定的参考价值。

我对xna很陌生。我刚刚创建了一个带有透明背景(洋红色)的精灵。问题是我的Rectangle正在读取整个Sprite的坐标,而不是可见的。我如何使其仅读取可见的精灵。

myrectangle = new Rectangle(0, 0, box.Width, box.Height);

我想将可见部分放在不透明的位置。提前致谢。

答案

要将颜色转换为透明,请转到纹理属性,内容处理器并启用“颜色键”,然后将键“颜色”设置为洋红色。

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9MWGxVMC5wbmcifQ==” alt =“在此处输入图像描述”>

然后将精灵放置在所需的位置,需要设置正确的原点。

要将船中心设置在所需位置,需要设置原点,如下所示:“在此处输入图像描述”“ >>

因此,在绘制时,您需要执行以下操作:

 var origin = new Vector2(40,40);
 spritebatch.Draw(shipTexture, shipPosition, null, Color, origin, ...)

您也可以更改纹理矩形源:

 var texSource = new Rectangle( 25,25, 30,30);
 spritebatch.Draw(shipTexture, shipPosition, texSource, Color)

“在此处输入图像描述”“ >>

尽管如果您想将船定位在其中心,可能需要更改原点

您需要使用诸如Paint之类的程序手动测量所需点的偏移量,然后在Origin方法的参数Draw中设置该偏移量。更好的主意是测量精灵的像素大小(无背景),并在sourceRectangle方法中将其设置为Draw

另一答案

您需要使用诸如Paint之类的程序手动测量所需点的偏移量,然后在Origin方法的参数Draw中设置该偏移量。更好的主意是测量精灵的像素大小(无背景),并在sourceRectangle方法中将其设置为Draw

另一答案

使用像洋红色这样的透明颜色编码是非常老式的。如今,我们在图像中使用Alpha来实现这一目标。

另一答案

我在VB.Net中使用作弊方法,我认为您可以使用C#进行工作:

以上是关于XNA如何使xna不能读取透明颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 BasicEffect 在 XNA 中绘制模型

当 XNA windows 游戏关闭时,如何阻止 SoundEffect 使它们崩溃?

精灵表动画上的像素完美碰撞,XNA

XNA 中的自定义内容管道,如何手动设置漫反射纹理?

从 Maya 导入 XNA 曲线?

Alpha蒙版边界框透明与其他alpha蒙版冲突/覆盖。 XNA