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
Three.js 为什么我的聚光灯投射出一个完美的圆圈?_Three.js - Fatal编程技术网

Three.js 为什么我的聚光灯投射出一个完美的圆圈?

Three.js 为什么我的聚光灯投射出一个完美的圆圈?,three.js,Three.js,我很难弄明白为什么我的three.js SpotLight会这样。我想做一个游戏用的手电筒。我将聚光灯添加到场景中,如下所示: flashLight = new THREE.SpotLight( 0xffffff, 1 ); scene.add( flashLight ); flashLight.position.copy(player.body.position); flashLight.target.position.set(flashLight.position.x + player.

我很难弄明白为什么我的three.js SpotLight会这样。我想做一个游戏用的手电筒。我将聚光灯添加到场景中,如下所示:

flashLight = new THREE.SpotLight( 0xffffff, 1 );
scene.add( flashLight );
flashLight.position.copy(player.body.position);

flashLight.target.position.set(flashLight.position.x + player.lookDirection.x,
                             flashLight.position.y + player.lookDirection.y,
                             flashLight.position.z + player.lookDirection.z);

flashLight.target.updateMatrixWorld();
然后更新手电筒,使其与播放器同步,如下所示:

flashLight = new THREE.SpotLight( 0xffffff, 1 );
scene.add( flashLight );
flashLight.position.copy(player.body.position);

flashLight.target.position.set(flashLight.position.x + player.lookDirection.x,
                             flashLight.position.y + player.lookDirection.y,
                             flashLight.position.z + player.lookDirection.z);

flashLight.target.updateMatrixWorld();
出于某种原因,手电筒在其照射的表面上投射出一个完美的圆圈:

展示了预期的行为


谢谢

在演示中,您可以看到它采用相机位置,但偏移了一点

        flashLight.position.copy(camera.position);
        flashLight.position.x += 2;
        flashLight.position.y -= 3;
        flashLight.position.z -= 1;

我觉得你看到的是一个完美的圆,因为你从与光源相同的角度观察光束。

在演示中,你可以看到它占据相机位置,但偏移了一点

        flashLight.position.copy(camera.position);
        flashLight.position.x += 2;
        flashLight.position.y -= 3;
        flashLight.position.z -= 1;

我觉得你看到的是一个完美的圆,因为你从与光源相同的角度观察光束。

你是从闪光灯相同的角度观察光束的吗?可能会将闪光灯偏移,就好像它偏离了播放器的中心一样。我想你的问题是
手电筒。位置。复制(玩家。身体。位置)你的位置是1:1,你完全正确。有点尴尬。非常感谢。你可以试着用一个触发器,当它产生你的手电筒时,把它固定在那些坐标上,然后让你的玩家在它周围移动,从不同的角度看它。每次将其关闭/打开时,请设置方向,以便可以尝试从不同的视点查看其梁。注意:我从未使用过three.js,我真的很喜欢你的问题,很有趣!你是从闪光灯的同一角度看的吗?可能会将闪光灯偏移,就好像它偏离了播放器的中心一样。我想你的问题是
手电筒。位置。复制(玩家。身体。位置)你的位置是1:1,你完全正确。有点尴尬。非常感谢。你可以试着用一个触发器,当它产生你的手电筒时,把它固定在那些坐标上,然后让你的玩家在它周围移动,从不同的角度看它。每次将其关闭/打开时,请设置方向,以便可以尝试从不同的视点查看其梁。注意:我从未使用过three.js,我真的很喜欢你的问题,很有趣!