Когда я нажимаю на объект, я могу перемещаться и вращаться вокруг него.
Вот негладкий код:
mouseEvents() {
window.addEventListener('click', (event: MouseEvent) => {
event.preventDefault()
// Get the mouse position
this.mouse.x = (event.clientX / window.innerWidth) * 2 - 1
this.mouse.y = -(event.clientY / window.innerHeight) * 2 + 1
this.raycaster.setFromCamera(this.mouse, this.camera)
var intersects = this.raycaster.intersectObjects(this.scene.children, true)
for (var i=0; i<intersects.length; i++) {
// Look at the object and rotate around it
this.controls.target.set( intersects[i].point.x, intersects[i].point.y, intersects[i].point.z )
// Move to the object
this.camera.position.x = intersects[i].point.x
this.camera.position.y = intersects[i].point.y
this.camera.position.z = (intersects[i].point.z) + 1000
}
})
}
Теперь я хочу сделать точно такой же шарнир, но вращающийся и движущийся плавно. После нескольких чтений на inte rnet я нашел Tween JS и использовал его. Проблема в том, что я могу плавно двигаться к объекту, но я не знаю, как смотреть на объект и плавно вращаться вокруг него .
Вот гладкий код:
mouseEvents() {
window.addEventListener('click', (event: MouseEvent) => {
event.preventDefault()
// Get the mouse position
this.mouse.x = (event.clientX / window.innerWidth) * 2 - 1
this.mouse.y = -(event.clientY / window.innerHeight) * 2 + 1
this.raycaster.setFromCamera(this.mouse, this.camera)
var intersects = this.raycaster.intersectObjects(this.scene.children, true)
for (var i=0; i<intersects.length; i++) {
// Look at the object and rotate around it smoothly (using tweenjs I suppose)
????????????
// Move to the object smoothly
var position = this.camera.position;
var target = { x : intersects[i].point.x, y: intersects[i].point.y, z: intersects[i].point.z + 1000 };
var tween = new TWEEN.Tween(position).to(target, 2000);
tween.easing(TWEEN.Easing.Linear.None)
tween.start()
}
})
}