2011-12-31 51 views
0

我做了一个原型游戏像蠕虫我想不仅要拍,但也看到了整个投影曲线在我的镜头将前往它击中地面之前。玩家给出的唯一信息是角度和权力。还有一些像风和重力的元素。射击弹丸给出的角度和力量

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

谢谢。

+1

欢迎来到[SO]。你试过什么了? – zzzzBov 2011-12-31 14:21:34

+0

另外,请花一些时间阅读[faq]。 – zzzzBov 2011-12-31 14:24:45

+0

这似乎更像是“为我工作”类型的问题,而不是“我的代码出了什么问题”问题。阅读[常见问题],你会注意到这些问题并没有得到真正的赞赏。尽管如此,我在下面写了一个答案,它将很快准备好 – 2011-12-31 14:25:37

回答

4

数学(和物理)部分

所以这看起来像10级物理给我。

通过弹丸trced的路径(如你所说)通过方程可描述一个parbola现在

Projectile differential equation

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

范围:Range of projectile

身高:Height of projectile

(VI =在itial速度,θ-I =拍摄WRT水平)的初始角度

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

Prabola path equation

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

编程部分

假设以下常数:

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

正弦函数可作为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))); 
} 

注意,的角度以弧度

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

有关详细信息上抛运动,google它。