如何使用代码为抽搐运动制作动画?

How can I animate twitching movement with code?

我创建了一个动画来说明我想用代码实现什么:Example of twitches

它保持静止,偶尔快速旋转,然后returns回到原来的状态。

如果能在悬停时调高就好了,比如让它剧烈晃动1秒。但这并不重要。

基于 Marquizzo 的回答:

Just use Math.random() to update the rotation on each frame.

单独使用Math.random(),不会达到这种效果。如果你想让它停留在一个地方,就像你的 GIF 中显示的那样,你可以这样做:

function getRandomDecimal(min, max) {  //Generates the rotation value
    var rand = Math.random()*(max-min) + min;
    var power = Math.pow(10, 2);
    return Math.floor(rand*power) / power;
}

function render(){
    renderer.render(scene, camera);
    requestAnimationFrame(render);

    objectToTwitch.rotation.x = getRandomDecimal(-1, 1); //Set the x rotation to a random decimal from `-1` to `1`.
};

render(); //Calling the function manually the first time

让我解释一下这段代码。我们从一个名为 getRandomDecimal() 的自定义函数开始,它接受 minmax 的参数。然后我们将您对象的旋转设置为 -1min1max 之间的随机数。这每秒更改 60 次,或用户浏览器的帧速率。如果这种“抽搐”效果发生得太快,您可以在程序中的其他位置触发该行代码。

这样就可以了~