#random #three.js
#Случайный #three.js
Вопрос:
Может быть, вопрос новичка, но я хотел бы использовать случайную переменную несколько раз в своем коде, но, конечно, она напоминает то же самое для всех параметров, использующих ее. Как я мог это исправить?
Пример :
var randomColor = [yellow, blue, green][Math.floor(Math.random() * 3)]
const cube1 = new THREE.Mesh(geometry, randomColor);
scene.add(cube1);
const cube2 = new THREE.Mesh(geometry, randomColor);
scene.add(cube2);
Эти два куба будут иметь одинаковый материал (с именем RandomColor), даже если он случайный.
Заранее благодарю вас!
Комментарии:
1. Создайте
randomColor
функцию, чтобы она возвращала случайный цвет при вызове.var randomColor = function(){ return [yellow, blue, green][Math.floor(Math.random() * 3)] }
Ответ №1:
Вместо того, чтобы каждый раз использовать один и тот же случайный цвет, вы создаете новый, вызывая getRandomColor()
его, как только он вам понадобится.
const colors = ['yellow', 'blue', 'green']
function getRandomColor() {
const index = Math.floor(Math.random() * colors.length)
return colors[index]
}
const cube1 = new THREE.Mesh(geometry, getRandomColor());
scene.add(cube1);
const cube2 = new THREE.Mesh(geometry, getRandomColor());
scene.add(cube2);
Ответ №2:
Вот решение, с которым предыдущие ответы не работают three.js :/ :
let colors = ['0xff0000','0xf7c252','0xa0bbd0']
const colour = new THREE.Color();
colour.setHex(colors[Math.floor(Math.random() * colors.length)]);
fond = new THREE.MeshToonMaterial({ color: colour });
const cube1 = new THREE.Mesh(geometry, fond);
scene.add(cube1);
const cube2 = new THREE.Mesh(geometry, fond);
scene.add(cube2);