-1

我有一个精灵,它的大小在动画期间从 0.6f 变为 2.0f。

同时我希望它的 alpha 值随着规模的增加从 1.0f 变为 0。所以精灵在 0.6f 处完全不透明,然后逐渐消失,直到大小为 2.0f 时变得完全透明。

我如何关联这些值?

4

2 回答 2

0
spriteBatch.Draw(texture, Vector2.Zero, Color.White*alpha,null,0f,origin,scale,1f);

在哪里

  alpha = MathHelper.Clamp(0, 1 , 1 - (scale - startScale)/deltaScale);

在你的情况下

 startScale = 0.6f,deltaScale = 2.0f-0.6f = 1.4f;
于 2013-09-20T07:54:51.630 回答
0

如果您分别为每个值设置动画,它将更容易和更可扩展。在这种情况下,规模和阿尔法,但相同的逻辑可以应用于任何事情。

动画是时间的函数,因此您在这里缺少的变量是您希望动画持续多长时间。

每个动画都有一个 startValue 和一个 endValue。从中可以得出“每秒变化”,如下所示:

var changePerSecond = (endValue - startValue) / totalSeconds;

然后在每一帧中,您只需通过乘以帧时间(deltaTime)来增加所需的属性,例如

scale += changePerSecond * deltaTime;

好的,通过基本概念,您可以了解它如何在动画中用于缩放和 Alpha(以 1 秒动画为例)。

var scalePerSecond = (2.0f - 0.6f) / 1.0f;
var alphaPerSecond = (0.0f - 1.0f) / 1.0f;

然后在你的更新方法中..

scale += scalePerSecond * deltaTime;
alpha += alphaPerSecond * deltaTime;

请注意,这是一个最简单的线性动画示例,用于演示该概念。您可能需要其他代码来检测动画的结束以及结束时的操作。

于 2013-09-20T13:24:35.233 回答