Непрерывная стрельба снарядами с использованием прослушивателя событий mousedown в Three JSCSS

Разбираемся в CSS
Ответить
Anonymous
 Непрерывная стрельба снарядами с использованием прослушивателя событий mousedown в Three JS

Сообщение Anonymous »

Я создаю игру, в которой нужно стрелять снарядами, и пытаюсь понять, как стрелять непрерывно, удерживая кнопку мыши с помощью прослушивателя событий mousedown. Он стреляет один раз, но не постоянно. Я пробовал использовать setInterval несколькими способами, но у меня это не работает. Вот мой код:

Код: Выделить всё

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();
Кроме того, мой снаряд представляет собой файл GLB, поэтому здесь есть загрузчик. Заранее благодарю за ответы.

Подробнее здесь: https://stackoverflow.com/questions/798 ... n-three-js
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «CSS»