我正在做一个像蠕虫这样的原型游戏,我不仅要拍摄,还要看到整个投影曲线我的镜头在它到达之前会去的地方地面。玩家给出的唯一信息是角度和力量。还有一些等级元素,如风和重力。
我可以获得投影曲线的代码吗?我认为它就像一个抛物线。我研究抛物线,但我有一些难以将这些数学公式应用到编程代码中。
感谢。
答案 0 :(得分:4)
数学(和物理)部分
所以这对我来说似乎是十年级物理。
射弹所追踪的路径(正如你所说)是一个由等式描述的抛物线
现在,如果你解决这个等式,你会得到以下参数:
范围:
高度:
(vi =初始速度,θi=水平射击的初始角度)
而且,(x, y)
中抛物线路径的等式将是
(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它。