Я пытаюсь изменить цвет грани куба при наведении курсора мыши:
Вот что я придумал до сих пор:
function onDocumentMouseMove(event)
{
event.preventDefault();
// update the mouse variable
mouse.x = (event.clientX / window.innerWidth) * 2 - 1;
mouse.y = -(event.clientY / window.innerHeight) * 2 + 1;
var intersects = raycaster.intersectObjects( scene.children );
if ( intersects.length > 0 )
{
var index = Math.floor( intersects[0].faceIndex / 2 );
switch (index)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
}
}
}
Проблема Я не знаю, какой метод использовать для окрашивания лиц в другой цвет внутри корпуса переключателя
Взгляните на этот jsfiddle с кодом, который я использовал от Жоржа:
https://jsfiddle.net/rand0mus3r/5qe4gyj3/4/
Ищите только функцию onDocumentMouseMouve()
.
Я пробовал ваш код, но он не работал.
Причина, по которой я поместил ваш код под if (cube.material.color == 0xff0000)
, потому что я все еще хотел, чтобы куб был окрашен в серый цвет при наведении курсора.
Но когда он был выбран, поэтому цвет красный, я хотел, чтобы при наведении указателя эта сторона изменилась .
Итак, когда вы изменяете измерение y на gui и создаете куб, и он ВЫБРАН (поэтому цвет красный), когда вы наводите курсор на его стороны, он не меняет цвет.
Я не знаю, что делать дальше, так как неясно, как раскрасить стороны куба.
Вот это код для этой функции:
function onDocumentMouseMove(event)
{
event.preventDefault();
// update the mouse variable
mouse.x = (event.clientX / window.innerWidth) * 2 - 1;
mouse.y = -(event.clientY / window.innerHeight) * 2 + 1;
// calculate objects intersecting the picking ray
var intersects = raycaster.intersectObjects( scene.children );
if ( intersects.length > 0 && intersects[ 0 ].object === cube && isClicked === false)
{
cube.material.color.set( 0xF7F7F7 );
}
else if (isClicked === false)
{
cube.material.color.set( cube.userData.originalColor );
}
if (cube.material.color == 0xff0000)
{
if ( intersects.length > 0 )
{
// pick the first object. It's the closest one
this.pickedObject = intersectedObjects[0].object;
// save its color
this.pickedObjectSavedColor = this.pickedObject.material.emissive.getHex();
// set its emissive color to flashing red/yellow
this.pickedObject.material.emissive.setHex((time * 8) % 2 > 1 ? 0xFFFF00 : 0xFF0000);
}
}
}