3
我可以从A跳到B吗?
我正在为侧滑车制作一些基本的AI,并且我需要知道AI单元是否可以仅通过跳跃就可以从A点到达B点。 我的角色的飞行轨迹有点用处不大,因为他们可以在空中施加力量(例如在Jazz Jackrabbit 2中),因此与经典弹丸的轨迹不同: 投掷或发射的弹丸将采取(...)没有推进力的路径。 ……我想我的问题更多是关于带有推进力的弹丸(例如火箭)。 为了说明这一点,这是我跳并不断按下“左键”时飞行曲线的样子(在左端看起来有所不同,这是我在空中进行一些操作的地方): 飞行期间施加的力始终平行于X轴,因此,如果我按住“左”,则为F =(-f,0);如果我按住“右” ,则为F =(f,0)。 他的动作非常像跳台滑雪者: 因此,它与经典的抛物线轨迹有很大不同(来源:Wikipedia): 更困难的是,我正在模拟简单的空气阻力,因此我的角色只能加速到某个最大速度值。 这是通过在相反的方向施加较小的力来完成的: b2Vec2 vel = body->GetLinearVelocity(); float speed = vel.Normalize(); //normalizes vector and returns length body->ApplyForce( AIR_RESISTANCE_MULT * speed * speed * -vel, body->GetWorldCenter() ); AIR_RESISTANCE_MULT是一个常数,在我的情况下等于0.1。 假设我的角色是一个非常小的点。 而且我没有考虑障碍,所以我的问题是这样的... 在给定初始速度V的情况下,如何确定(至少可靠地猜测)我在跳跃时应用于角色的脉冲J =(0,-j),重力G =(0,g),力F =(+ -f ,0)如果我们真的决定考虑空气阻力 (这是可选的) ,那么在飞行和AIR_RESISTANCE_MULT期间会持续应用(这是可选的),是否某个点位于我的角色将采用的路径绘制的曲线下方? 我实际上不知道从哪里开始计算,实际上,我不一定对确切的答案感兴趣。良好的破解/逼真度将非常棒,因为AI绝对不需要完美运行。 …