Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 鼠标-x和y从平面移动,但为什么?_Javascript_Three.js - Fatal编程技术网

Javascript 鼠标-x和y从平面移动,但为什么?

Javascript 鼠标-x和y从平面移动,但为什么?,javascript,three.js,Javascript,Three.js,我将有一个类似于threejs.org/examples/#webgl_interactive_voxelpainer的网格,然后当我点击一个点时,我可以做任何我想做的事情。我就是做不到:/ 我的助手 var onmouseclick; var planex = 16000; var planey = 16000; var rasterx = 100; var rastery = 100; var waterGeometry; var planeMaterials; var watermat

我将有一个类似于threejs.org/examples/#webgl_interactive_voxelpainer的网格,然后当我点击一个点时,我可以做任何我想做的事情。我就是做不到:/

我的助手


var onmouseclick;

var planex = 16000;
var planey = 16000;
var rasterx = 100;
var rastery = 100;
var waterGeometry;
var planeMaterials;
var watermaterial;
var waterplane;
var mouse;
然后我的功能是为mapp构建平面

buildmapp = function () {
    //waterunderground  
    waterGeometry = new THREE.PlaneGeometry(planex, planey, rasterx, rastery);
    planeMaterials = [
        new THREE.MeshLambertMaterial({
            map: new THREE.TextureLoader().load('ocean.jpg'),
            side: THREE.DoubleSide,
            wireframe: false
        }),
        new THREE.MeshLambertMaterial({
            map: new THREE.TextureLoader().load('ocean.jpg'),
            side: THREE.DoubleSide,
            wireframe: false
        }),
        new THREE.MeshLambertMaterial({
            map: new THREE.TextureLoader().load('ocean.jpg'),
            side: THREE.DoubleSide,
            wireframe: false
        }),
        new THREE.MeshLambertMaterial({
            map: new THREE.TextureLoader().load('ocean.jpg'),
            side: THREE.DoubleSide,
            wireframe: false
        }),
    ];
    watermaterial = new THREE.MeshFaceMaterial(planeMaterials);
    waterplane = new THREE.Mesh(waterGeometry, watermaterial);
    waterplane.position.set(0, 0, 0);
    waterplane.rotation.set(0, 0, 0);
    scene.add(waterplane);
}
然后我的鼠标点击功能。这里的坐标应该来自鼠标平面.x或y。 只是我找不到任何关于如何做的指导/

//
onmouseclick = function () {
    mouse = new THREE.Vector3();
    window.document.addEventListener('click', function (e) {
        mouse.x = ((e.clientX / window.innerWidth) * 2 - 1);
        mouse.y = (e.clientY / window.innerHeight) * 2 - 1;
        console.log(mouse.x, mouse.y, 'clicklockation', );
        // mouse - x and y from the plane but why ? 
    });
}

有人能帮我或给我一个指导或方法来了解我需要看什么吗?

我不明白你的问题。你有什么问题?您不知道如何在单击时获取MouseX和MouseY事件?您想知道单击了网格的哪个磁贴吗?请参见当前我仅计算屏幕上画布的坐标。但是当我点击地图上的坐标时,我想知道它们是什么。所以我可以把我的物体移到这些坐标上。我知道怎么把它移到那里。但我不知道如何在我点击的地图(水上飞机)上找到当前位置。@Rabbid76我想是的。今晚我会尝试一下,看看它是否有效。我会有一个这样的网格,然后当我点击一个点时,我可以做任何我想做的事情。我就是做不成。/我不明白你的问题。你有什么问题?您不知道如何在单击时获取MouseX和MouseY事件?您想知道单击了网格的哪个磁贴吗?请参见当前我仅计算屏幕上画布的坐标。但是当我点击地图上的坐标时,我想知道它们是什么。所以我可以把我的物体移到这些坐标上。我知道怎么把它移到那里。但我不知道如何在我点击的地图(水上飞机)上找到当前位置。@Rabbid76我想是的。今晚我会尝试一下,看看它是否有效。我会有一个这样的网格,然后当我点击一个点时,我可以做任何我想做的事情。我就是做不到:/
//gameprocess
update = function () {};
render = function () {
    renderer.clear();
    renderer.render(scene, camera);
};
GameLoop = function () {
    render();
    update();
    steuerung_tastatur_camera();
    onmouseclick();
    requestAnimationFrame(GameLoop);
};
//first build all object
buildobj();