我目前正在尝试一个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;
}
}
它可以工作,但是在我发送的示例链接中没有达到相同的效果。我希望此人滚动并使其具有一定速度,以便它继续滚动更多。此刻,当您滚动时,它几乎立即停止。
答案 0 :(得分:1)
也许代替
this.dolly.cameraPosition = clamped;
类似
this.dolly.cameraPosition += (clamped-this.dolly.cameraPosition)*0.5
相反?
您可以将0.5更改为不同的值,例如0.1或0.9,以更改过渡的简洁性。