mousewheelevent
を、「カメラを移動させるための関数」とするのではなく、「カメラの移動状態を開始する」関数ととらえれば、できそうですね。
javascript
1
2window.camMoving = false;
3window.camMoviingTime = 0;
4
5window.CamFirst = new THREE.Vector3(0,0,0); //開始位置
6window.CamEnd = new THREE.Vector3(0,0,100); //終了位置
7
8
9function mousewheeleventSample(){
10 // カメラが移動状態でなければ、カメラ移動状態にする
11 if(!window.camMoving){
12 window.camMoving = true;
13 window.camMoviingTime = 0;
14 }
15}
16
17
18renderer() {
19 if(window.camMoving){
20
21 //すごく単純に、50フレーム(1秒弱)でカメラが移動しきる感じにしてあります。
22 if(window.camMoviingTime < 50){
23 window.camMoviingTime++; //経過フレーム数
24
25 //中間地点の入れ物を作ります。
26 const movingCam = window.CamFirst.lerp(window.CamEnd , window.camMoviingTime * 0.02 )
27
28 camera.position.copy(movingCam);
29
30 }
31 }
32
33 renderer.render();
34}
35
36
Vector3.lerp( 目標地点, 目標地点までの係数)
で、開始位置と終了位置の中間の位置を求めることができます。係数は 0で初期位置、1.0で目標位置 となります。 window.camMoviingTime
に0.02をかけているのは、50のときに1.0になるようにするため、です。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。