как сделать цикл для куба, идущего вверх и вниз за три js

#javascript #three.js

Вопрос:

В этом примере кода поле перемещается только вверх, я хочу, чтобы оно перемещалось вверх и вниз

     BoxGeo = new HREE.BoxGeometry(10,10,10)
    BoxMat = new THREE.MeshPhongMaterial({
      color: 0xf3e54f
    }),
    cab = new THREE.Mesh ( BoxGeo, BoxMat);
    scene.add(cab);
   
cab.position.y   = 1;
 

Комментарии:

1. Это происходит только потому, что Math.random() даст вам значение между [0, 1] тем, чтобы добавить это, чтобы .y оно увеличилось.

Ответ №1:

Поскольку Math.random() дает вам числа в [0, 1] диапазоне, вы можете изменить этот диапазон [-1, 1] с помощью простого уравнения:

 let displacement = (Math.random() - 0.5) * 2.0;
cab.position.y  = displacement;
 

Комментарии:

1. Когда случайное число отрицательное, оно будет двигаться вниз. Когда случайное число будет положительным, оно будет двигаться вверх. Я не уверен, что понимаю, что еще вы ищете.

2. Ты никогда не упоминал, что она не может опуститься ниже нуля. Я предлагаю вам прояснить эти вещи в вашем первоначальном вопросе.

Ответ №2:

Вам нужно Math.sin() в вашем цикле анимации, чтобы плавно перемещать объект вверх и вниз.

 cab.position.y = Math.sin(elapsedTime)   1