如何在 javascript 中计算射弹的弧度?
How do I calculate the arc of a projectile in javascript?
我正在为课程作业创建一个游戏,两个坦克放在一个 canvas 上,带有炮塔初始速度和角度的输入框,然后是一个发射炮弹的按钮(目前是 div 元素在一个圆的形状),它调用一个函数,在这种情况下它是 fire1。我搞砸了几天,似乎无法让它工作,"bullet" 是我的 div 元素。
function fire1 () {
var canvas = document.getElementById("canvas")
var bullet = document.getElementById("bullet");
bullet.style.visibility = "visible"
var start = null;
var intialVelocity = velocity1.value
var angle = angle1.value
var g = 9.81;
var progress, x, y;
function step(timestamp) {
if(start === null) start = timestamp;
progress = (timestamp - start)/1000;
x = (turret1.x + 80) + (intialVelocity*progress)
y = (turret1.y - 400) + (intialVelocity*progress)*Math.sin(angle*toRadians) - (0.5*g*(progress^2));//)
bullet.style.left = x + "px";
bullet.style.bottom = y + "px";
requestAnimationFrame(step);
}
requestAnimationFrame(step);
}
下面是我的 css 部分内容。
#bullet {
position: absolute;
left: 0;
bottom: 50%;
width: 1em;
height: 1em;
border-radius: 0.5em;
background: red;
visibility: hidden;
}
我是 javascript、css 和 html 的新手,所以非常感谢帮助,我正在尝试合并 trajectory formula 这行得通吗?我还希望它具有动画效果,以便在发射时遵循一条路径。谢谢
我很久以前就解决了这个问题,但忘记更新解决方案,下面是如何计算轨迹的 x 和 y:
x = ((turret.anchorX + negative*(initialVelocity*progress*Math.cos(angle*toRadians)))); //x-coordinate for bullet calculated by using x=ut.
y = ((720 - turret.anchorY + (initialVelocity*progress*Math.sin(angle*toRadians)) + (0.5*g*(Math.pow(progress,2))))); //y-coordinate for bullet calculated by usnig ut+0.5at^2.
我正在为课程作业创建一个游戏,两个坦克放在一个 canvas 上,带有炮塔初始速度和角度的输入框,然后是一个发射炮弹的按钮(目前是 div 元素在一个圆的形状),它调用一个函数,在这种情况下它是 fire1。我搞砸了几天,似乎无法让它工作,"bullet" 是我的 div 元素。
function fire1 () {
var canvas = document.getElementById("canvas")
var bullet = document.getElementById("bullet");
bullet.style.visibility = "visible"
var start = null;
var intialVelocity = velocity1.value
var angle = angle1.value
var g = 9.81;
var progress, x, y;
function step(timestamp) {
if(start === null) start = timestamp;
progress = (timestamp - start)/1000;
x = (turret1.x + 80) + (intialVelocity*progress)
y = (turret1.y - 400) + (intialVelocity*progress)*Math.sin(angle*toRadians) - (0.5*g*(progress^2));//)
bullet.style.left = x + "px";
bullet.style.bottom = y + "px";
requestAnimationFrame(step);
}
requestAnimationFrame(step);
}
下面是我的 css 部分内容。
#bullet {
position: absolute;
left: 0;
bottom: 50%;
width: 1em;
height: 1em;
border-radius: 0.5em;
background: red;
visibility: hidden;
}
我是 javascript、css 和 html 的新手,所以非常感谢帮助,我正在尝试合并 trajectory formula 这行得通吗?我还希望它具有动画效果,以便在发射时遵循一条路径。谢谢
我很久以前就解决了这个问题,但忘记更新解决方案,下面是如何计算轨迹的 x 和 y:
x = ((turret.anchorX + negative*(initialVelocity*progress*Math.cos(angle*toRadians)))); //x-coordinate for bullet calculated by using x=ut.
y = ((720 - turret.anchorY + (initialVelocity*progress*Math.sin(angle*toRadians)) + (0.5*g*(Math.pow(progress,2))))); //y-coordinate for bullet calculated by usnig ut+0.5at^2.