游戏开发:如何为速度增加加速度?

问题描述 投票:0回答:1

我有一个视图,我需要用加速度进行缩放,我的意思是,当缩放比例为MIN_SCALE时,速度必须很慢,但是当缩放比例接近MAX_SALE时,速度必须更快。 。现在我的速度总是一样。

视图将使用许多帧来移动它:

numberOfFrames = Math.round((float)ANIMATION_TIME/GameLoopThread.FRAME_PERIOD);
frameCount = 0;

并且我用该帧数计算scaleVelocity:

scaleVelocity = (MAX_SCALE-MIN_SCALE)/numberOfFrames;

每个游戏循环迭代,我使用以下代码更新视图的比例:

if (frameCount<numberOfFrames) {
    currentScale = currentScale + scaleVelocity;
    frameCount++;
}

当帧数达到numberOfFrames时,动画必须结束。

如何向此代码添加加速?请记住,加速度必须考虑到视图需要从frameCount变量到达最后一帧的MAX_SCALE

非常感谢

android math game-physics game-development acceleration
1个回答
0
投票

screenshot from android docs

定义您的插值器

INTERPOLATOR = new AccelerateInterpolator();  

计算scaleVelocity时,获取当前插值

float interpolatedValue = INTERPOLATOR.getInterpolation(frameCount / numberOfFrames);

getInterpolation()返回介于0(动画开始)和1(动画结束)之间的值

scaleVelocity = (MAX_SCALE-MIN_SCALE)/numberOfFrames * interpolatedValue;  // use min,max func if needed.

加速插值器的数学方程为f(x)=x²,如果您想进行更大的更改,请创建自定义插值器。

© www.soinside.com 2019 - 2024. All rights reserved.