鼠标滚轮事件-速度/动量

时间:2018-08-13 19:33:52

标签: javascript three.js

我目前正在尝试一个THREE.JS项目,并使用鼠标滚轮滚动事件将其从0变为1。

但是,我想获得与您在此链接playdoh by merci Michael

上看到的势头相同的动力。

目前,这是我到目前为止所做的。

this.R = 0
mouseWheel(dx, dy) {
    if (this.R < 0) {
        this.R = 0
        return
    }
    if (this.R > 1) {
        this.R = 1
        return
    }

    inertia.update(dy)
    this.R += dy / 45500
    let clamped = this.clamp(0, 1, this.R);

    // UPDATE THREEJS CAMERA POS
    this.dolly.cameraPosition = clamped;
    this.dolly.lookatPosition = clamped;
    this.dolly.update();
}
clamp(min, max, v) {
    if (v < min) {
        return min;
    } else if (v > max) {
        return max;
    } else {
        return v;
    }
}

它可以工作,但是在我发送的示例链接中没有达到相同的效果。我希望此人滚动并使其具有一定速度,以便它继续滚​​动更多。此刻,当您滚动时,它几乎立即停止。

1 个答案:

答案 0 :(得分:1)

也许代替

this.dolly.cameraPosition = clamped;

类似

this.dolly.cameraPosition += (clamped-this.dolly.cameraPosition)*0.5

相反?

您可以将0.5更改为不同的值,例如0.1或0.9,以更改过渡的简洁性。