Fire bullets in direction of cannon
This commit is contained in:
@@ -133,17 +133,21 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function fireBullet(x, y) {
|
function fireBullet(x, y) {
|
||||||
|
const degrees = getRotate(gun);
|
||||||
|
const radians = degrees * Math.PI / 180;
|
||||||
|
const vx = -Math.sin(radians);
|
||||||
|
const vy = Math.cos(radians);
|
||||||
|
|
||||||
const el = document.createElementNS(namespaceURIsvg, 'circle');
|
const el = document.createElementNS(namespaceURIsvg, 'circle');
|
||||||
el.setAttribute('r', 1);
|
el.setAttribute('r', 1);
|
||||||
el.setAttribute('cx', x);
|
el.setAttribute('cx', 0);
|
||||||
el.setAttribute('cy', y);
|
el.setAttribute('cy', 0);
|
||||||
const node = bulletsContainer.appendChild(el);
|
const node = bulletsContainer.appendChild(el);
|
||||||
const bullet = { x: x, y: y, vx: 1, vy: 1, time: 5000, node: node }
|
const bullet = { x: x, y: y, vx: vx, vy: vy, time: 5000, node: node }
|
||||||
bullets.push(bullet);
|
bullets.push(bullet);
|
||||||
console.log("bullet fired", bullet, bullets);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getTransform(el) {
|
function getTranslate(el) {
|
||||||
let x, y;
|
let x, y;
|
||||||
|
|
||||||
if (el.style.transform.length === 0) {
|
if (el.style.transform.length === 0) {
|
||||||
@@ -153,7 +157,12 @@
|
|||||||
[[, x], [, y] = def] = [...el.style.transform.matchAll(regex)];
|
[[, x], [, y] = def] = [...el.style.transform.matchAll(regex)];
|
||||||
}
|
}
|
||||||
|
|
||||||
return [x, y];
|
return [+x, +y];
|
||||||
|
}
|
||||||
|
|
||||||
|
function getRotate(el) {
|
||||||
|
let [[, degrees]] = [...el.style.transform.matchAll(degsRegex)];
|
||||||
|
return +degrees;
|
||||||
}
|
}
|
||||||
|
|
||||||
requestAnimationFrame(firstFrame);
|
requestAnimationFrame(firstFrame);
|
||||||
@@ -215,14 +224,7 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
let x, y;
|
let [x, y] = getTranslate(hitbox);
|
||||||
if (hitbox.style.transform.length === 0) {
|
|
||||||
x = 0;
|
|
||||||
y = 0;
|
|
||||||
} else {
|
|
||||||
[[, x], [, y] = def] = [...hitbox.style.transform.matchAll(regex)];
|
|
||||||
}
|
|
||||||
|
|
||||||
let positionX = changeX + +x;
|
let positionX = changeX + +x;
|
||||||
let positionY = changeY + +y;
|
let positionY = changeY + +y;
|
||||||
|
|
||||||
@@ -233,13 +235,10 @@
|
|||||||
else if (positionX < -200) positionX += 400;
|
else if (positionX < -200) positionX += 400;
|
||||||
|
|
||||||
hitbox.style.transform = `translate(${positionX}px, ${positionY}px)`;
|
hitbox.style.transform = `translate(${positionX}px, ${positionY}px)`;
|
||||||
// console.log(hitbox.style.transform);
|
|
||||||
// hitbox.style.transform = `translate(0px, ${position}px)`;
|
|
||||||
// if (+y < 200)
|
// if (+y < 200)
|
||||||
// if (timestamp < 10000)
|
// if (timestamp < 10000)
|
||||||
requestAnimationFrame(t => animate(t));
|
requestAnimationFrame(t => animate(t));
|
||||||
|
|
||||||
// if (velocity[1] < 0)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let force = 10;
|
let force = 10;
|
||||||
@@ -293,7 +292,7 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
fireButton.addEventListener("click", function (e) {
|
fireButton.addEventListener("click", function (e) {
|
||||||
const [x, y] = getTransform(hitbox);
|
const [x, y] = getTranslate(hitbox);
|
||||||
fireBullet(+x, +y);
|
fireBullet(+x, +y);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 8.8 KiB |
Reference in New Issue
Block a user