1、直接在每次render前更新控制器
render() {
this.controls.update()
this.renderer.render(this.scene, this.camera)
}
2、第一种方法不管用的话,就获取摄像机方向看到的第一个点的位置然后设置给控制器的target
let cameraPosition = this.camera.position.clone()
let cameraDirection = new THREE.Vector3()
this.camera.getWorldDirection(cameraDirection)
// 创建一个Raycaster对象并指定起点和方向
let raycaster = new THREE.Raycaster(cameraPosition, cameraDirection)
// 执行射线投射,并获取第一个碰撞物体的位置
let intersects = raycaster.intersectObject(this.scene)
if (intersects.length > 0) {
let point = intersects[0].point
this.controls.target.set(point.x, point.y, point.z)
this.controls.update()
}
this.render()
就可以了,害。为什么我用第一种方法不管用呢,有谁知道呀