我有一个精灵,在动画期间大小从0.6f变为2.0f。
与此同时,我希望它的alpha值随着比例的增加从1.0f变为0。因此,精灵在0.6f处是完全不透明的,并逐渐消失,直到大小为2.0f,它变得完全透明。
如何关联这些值?
答案 0 :(得分: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;
答案 1 :(得分:0)
如果您单独为每个值设置动画,它将更容易,更易于扩展。在这种情况下,缩放和alpha,但相同的逻辑可以应用于任何东西。
动画是时间的函数,因此您在此处缺少的变量是您希望动画持续多长时间。
每个动画都有一个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;
请注意,这是一个最简单的线性动画示例,用于演示概念。您可能需要其他代码来检测动画的结束以及完成时要执行的操作。