ThreeJs事件之鼠標點擊網格對象後觸發對應事件

    //聲明raycaster和mouse變量
    var raycaster = new THREE.Raycaster();
    var mouse = new THREE.Vector2();

function onMouseClick( event ) {
        //通過鼠標點擊的位置計算出raycaster所需要的點的位置,以屏幕中心爲原點,值的範圍爲-1到1.
        mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
        mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;
        // 通過鼠標點的位置和當前相機的矩陣計算出raycaster
        raycaster.setFromCamera( mouse, camera );
        // 獲取raycaster直線和所有模型相交的數組集合
        var intersects = raycaster.intersectObjects( scene.children );
        
        if(intersects.length>0){
            var this_sel=intersects[ 0 ];
            if(this_sel.object.type=='Mesh'){
                this_sel.object.material.color.set( 0xff0000 );
                console.log(this_sel.object);
                if(this_sel.object.name==='bb'){
                    this_sel.object.visible=false;
                }
            }
            
        }
        //將所有的相交的模型的顏色設置爲紅色,如果只需要將第一個觸發事件,那就數組的第一個模型改變顏色即可
        //for ( var i = 0; i < intersects.length; i++ ) {
        //    intersects[ i ].object.material.color.set( 0xff0000 );
        //    console.log(intersects[ i ].object); //第一個選中的網格模型
        //    break;
        //}
    }
    window.addEventListener( 'click', onMouseClick, false );

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章