给角度和力量射击射弹

时间:2011-12-31 14:12:27

标签: actionscript-3 math projection game-physics

我正在做一个像蠕虫这样的原型游戏,我不仅要拍摄,还要看到整个投影曲线我的镜头在它到达之前会去的地方地面。玩家给出的唯一信息是角度和力量。还有一些等级元素,如风和重力。

我可以获得投影曲线的代码吗?我认为它就像一个抛物线。我研究抛物线,但我有一些难以将这些数学公式应用到编程代码中。

感谢。

1 个答案:

答案 0 :(得分:4)

数学(和物理)部分

所以这对我来说似乎是十年级物理。

射弹所追踪的路径(正如你所说)是一个由等式描述的抛物线

Projectile differential equation

现在,如果你解决这个等式,你会得到以下参数:

范围:Range of projectile

高度:Height of projectile

(vi =初始速度,θi=水平射击的初始角度)

而且,(x, y)中抛物线路径的等式将是

Prabola path equation

(v0 =初始速度,θ=触发角度)

编程部分

假设以下常量:

const g:Number = 9.81; //9.81 m/s, the grav const

sin函数以Math.sin

的形式提供

电源功能可用Math.pow。这意味着,正弦平方将是

Math.pow(Math.sin(theta), 2)

可以将范围函数写为

function projectileRange(vel:Number, angle:Number):Number {
    var vsquare:Number = vel * vel;
    var rv:Number = vsquare * Math.sin(2 * angle) / g;
    return rv;
}

和高度函数为

function projectileHeight(vel:Number, angle:Number):Number {
    var vsquare:Number = vel * vel;
    var rv:Number = vsquare * Math.pow(Math.sin(angle), 2) / (2 * g);
    return rv;
}

和yPosition函数为

function yPosition(xPos:Number, vel:Number, angle:Number):Number {
    return xPos * Math.tan(angle) - (g * xPos * xPos / (2 * vel * vel * Math.cos(angle) * Math.cos(angle)));
}

请注意角度在RADIANS

function toRadians(degrees:Number):void {
    return degrees * Math.PI / 180;
}

有关射弹运动的更多信息,google它。