Код: Выделить всё
const loader3 = new GLTFLoader();
loader3.load('assets/leek.glb', function(glb){
projectile = glb.scene;
projectile.scale.set(0.01, 0.05, 0.07);
projectile.rotateY(Math.PI / 2);
projectileFiring = true;
});
let projectileFiring = false;
function shoot(){
window.addEventListener('mousedown', (event) => {
const rect = canvas.getBoundingClientRect();
const mouse = new THREE.Vector2(
((event.clientX - rect.left) / sizes.width) * 2 - 1,
-((event.clientY - rect.top) / sizes.height) * 2 + 1
);
const vector = new THREE.Vector3(mouse.x, mouse.y, 0.5).unproject(camera2);
const dir = vector.sub(camera2.position).normalize();
const dist = -camera2.position.z / dir.z;
const pos = camera2.position.clone().add(dir.multiplyScalar(dist));
if(event.clientX > 1320){
window.removeEventListener('mousedown', event)
return;
}
if(songPlaying === true && menuOpen === false){
projectile.position.x = pos.x;
projectile.position.y = pos.y + 3.5;
scene2.add(projectile);
projectileFiring = true;
}else{
projectileFiring = false;
}
});
}
window.addEventListener('mouseup', (event) => {
if(event.clientY > 1000){
window.removeEventListener('mousedown', (event))
scene2.remove(projectile)
return;
}
})
function animate(){
requestAnimationFrame(animate);
renderer.autoClear = false;
if(projectileFiring){
shoot();
}
projectile.position.y += 1;
renderer.render(scene1, camera1);
renderer.render(scene2, camera2);
};
animate();
Подробнее здесь: https://stackoverflow.com/questions/798 ... n-three-js
Мобильная версия