我正在使用适用于 Android 的 OpenGL ES 创建 2D 游戏。我想执行抖动效果。
我的想法是更改相机的 y 坐标,但我不确定算法。我的相机类有一个带有 x 和 y 变量的位置向量。
看起来像Opengl Real world Camera Shake algorithm的副本。本质上是模拟 Sin 波之后的抖动,并根据您希望相机抖动的程度来调制幅度。
像下面这样一个非常基本的轮廓,当幅度达到 0 时,你需要停止它。
private float amplitude = 10.0f;
private float adjustAmplitudePerSecond = -1.0f;
private float timeElapsed = 0.0f;
public void shake(float deltaTime) {
timeElapsed += deltaTime;
amplitude += adjustAmplitudePerSecond * deltaTime;
yourCamera.y += + Math.sin(timeElapsed);
}