【问题标题】:Shooting projectiles given an angle and power在给定角度和功率的情况下发射弹丸
【发布时间】:2011-12-31 14:12:26
【问题描述】:

我正在做一个类似 Worms 的原型游戏,我不仅想投篮,还希望看到 整个投影曲线,我的投篮在击中之前会在哪里移动地面。玩家给出的唯一信息是角度和力量。还有一些关卡元素,比如风和重力。

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

谢谢。

【问题讨论】:

  • 欢迎来到Stack Overflow。到目前为止,您尝试过什么?
  • 另外,请花点时间阅读faq
  • 这似乎更像是“为我做我的工作”类型的问题,而不是“我的代码有什么问题”的问题。阅读faq,您会注意到这些问题并没有真正受到赞赏。不过,我正在下面写一个答案,它很快就会准备好
  • 如果我提出了一些不受欢迎的问题,我向大家道歉。我没有关于那个的代码,因为我只是不知道该怎么做。我试图以非常菜鸟的方式应用公式“y = ax^2 + bx + c”,试图绘制抛物线的 3 个点,但没有成功。如果你坚持我可以把它放在我的帖子里。但它就像什么都没有,我想。抱歉,感谢您的反馈。我尽力了。
  • 似乎最简单的方法是保持 5px 的 x 增量,然后找到每个 x 坐标的 y 坐标,然后用线将它们连接起来。我相信这应该足够简单

标签: actionscript-3 math projection game-physics


【解决方案1】:

数学(和物理)部分

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

抛射物的路径是(如你所说)由等式描述的抛物线

现在,如果你解这个方程,你会得到以下参数:

范围:

身高:

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

并且,(x, y) 中抛物线路径的方程将是

(v0 = 初始速度,theta = 发射角)

编程部分

假设以下常量:

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)));
}

请注意,角度以弧度为单位

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

有关弹丸运动的更多信息,googleit。

【讨论】:

    猜你喜欢
    • 2021-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多