#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