我在做一个2d太空疑难解答游戏,船上有助推器。我想要确定每个助推器需要施加多大的力才能使我的船以最大的力朝它想要去的方向移动。
这艘船可能有任何数量的助推器,但可能只有2-10个这样的小数目。助推器的旋转是已知的,但我不能确定它们的大小。大小可以从0(min)到5(max)。
我到了一个点,我做出了这个方程:
directionToGo = ForceB1*B1Direction + ForceB2*B2Direction
但现在我得到了更多的助推器,我只是在想,要找到我想要的东西,我必须在每个方向上使用最小/中间/最大力来找到其他我不知道的。
那么我该怎么做呢?

我不得不取消回答,因为我还没有想出答案。
发布于 2015-07-30 00:45:25
这听起来像是一个约束最大化问题。您希望沿某个矢量最大化作用力,同时完全不沿垂直矢量施加力。
如果你的推进器没有全部指向重心,你需要的另一个约束是应用零扭矩。这确保了船不会因为力的不平衡而旋转。然而,为了简单起见,一些游戏忽略了这一点,并假设推进器永远不会施加扭矩。
需要注意的一件事是,你只需要在推进器的方向改变时进行优化:在游戏过程中,你可以只应用推进器的比率来添加那个力向量。(不过要注意,“对角”移动需要另一种解决方案:如果你只是尝试向前+横向施加,你将从推进器获得> 100%的功率,导致不平衡。)
这是一种方法--可能还有一种我不知道的更简单的解决方案。如果你能进一步约束你的问题,很可能有一种更简单的方法。
https://stackoverflow.com/questions/31703842
复制相似问题