【问题标题】:XNA animation sprite from transparent to opaqueXNA 动画精灵从透明到不透明
【发布时间】:2012-09-09 00:52:42
【问题描述】:

从透明图像转换为不透明图像时,动画图像出现问题。

如果我将图像从不透明图像设置为透明图像,则效果很好。 但是,如果我将图像从透明图像动画到不透明图像,它就不起作用了。(这是问题)

示例代码:

从不透明到透明的动画:(一切正常,功能齐全)

//Define variables (in construct):

float AlphaTime = 3500f; // total animate time (at milliseconds)
float AlphaTimeSubtract = 3500f; // at milliseconds
Color color = Color.White;

//Update method:

AlphaTimeSubtract -= (float)(gameTime.ElapsedGameTime.TotalMilliseconds); // abate number of elapsed time (for milliseconds) 
color *= MathHelper.Clamp(AlphaTimeSubtract / AlphaTime, 0, 1);

//Draw merhod:
spriteBatch.Draw(texture, position, color);

从透明到不透明的动画:(这是问题,它不起作用)!!!

结果是不可见的精灵!(这是错误的)

正确的结果应该是:动画精灵从透明到不透明。

//Define variables (in construct):

float AlphaTime = 3500f; // total animate time (at milliseconds)
float AlphaTimeSubtract = 3500f; // at milliseconds
Color color = Color.White;

//Update method:

AlphaTimeSubtract -= (float)(gameTime.ElapsedGameTime.TotalMilliseconds); // abate number of elapsed time (for milliseconds) 
color *= MathHelper.Clamp(Math.Abs(AlphaTimeSubtract - AlphaTime ) / AlphaTime , 0, 1);

//Draw merhod:
spriteBatch.Draw(texture, position, color);

MathHelper.Clamp()

Math.Abs():返回绝对值

我做错了什么?

【问题讨论】:

  • 颜色乘数 = 从 0 到 1 的浮点数。0 = 透明,1 = 不透明

标签: c# animation xna opacity


【解决方案1】:

编辑: 对不起,我的灵感来晚了:)

您的代码不起作用,因为当第一次调用Update() 方法时,您的颜色的Alpha 变为0,因为Math.Abs(AlphaTimeSubtract - AlphaTime ) / AlphaTime 返回的值非常接近0.0f 所以无论你将乘以什么数字 color,它仍然是 0。事实上这个问题在第一种情况下没有发生,因为逻辑说从1.0f开始减少它。因此,在这种情况下,您必须每次从 255 开始降低 alpha。所以这应该有效:

//Initialize it to 0
float AlphaTimeSubtract = 0.0f;

//Then in the update method increase it (The inverse logic you used in the opaque --> transparent effect)
AlphaTimeSubtract += (float)(gameTime.ElapsedGameTime.TotalMilliseconds);
color = Color.White * MathHelper.Clamp(AlphaTimeSubtract / AlphaTime , 0, 1);

我修改了代码,使其与第一个效果(不透明 -> 透明)相比更容易。

【讨论】:

  • 谢谢,但两个样本都不起作用。我尝试控制 AlphaTimeSubtract 值和颜色值(正在进行中)。两个价值观都是对的!但是精灵已经像隐形一样绘制了。无动画。我敢肯定,我没有“无”sintax 错误!绘制方法中的描绘会出错吗?
  • 好的,我编辑了我的答案,我完全错了。我试图解释我们缺少什么。
猜你喜欢
  • 2014-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-25
  • 1970-01-01
  • 2011-04-10
相关资源
最近更新 更多