C+中的火箭曲率+;SDL游戏 我在C++上使用SDL库制作阴谋集团。阴谋集团是一种游戏,玩家坐在屏幕底部,只能沿x方向移动。当敌人出现在你面前向你发射导弹时。游戏有点像这样

C+中的火箭曲率+;SDL游戏 我在C++上使用SDL库制作阴谋集团。阴谋集团是一种游戏,玩家坐在屏幕底部,只能沿x方向移动。当敌人出现在你面前向你发射导弹时。游戏有点像这样,c++,math,sdl,physics,game-physics,C++,Math,Sdl,Physics,Game Physics,我想让火箭沿着绿色显示的轨道飞行。弯曲的轨迹。但是它采用红色显示的轨迹。请记住,玩家也在移动,所以轨迹不是固定的 到目前为止,我实现的代码如下: void Missiles::Move(int playerX) { angle =atan(playerX - X); X=X + sin(angle)*2; } 其中PlayerX是玩家的X坐标,X是火箭的X坐标。我已使Y坐标以恒定速度变化,因此代码中未显示它们。要获得瞄准角度,必须考虑Y坐标的差异 angle = atan


我想让火箭沿着绿色显示的轨道飞行。弯曲的轨迹。但是它采用红色显示的轨迹。请记住,玩家也在移动,所以轨迹不是固定的

到目前为止,我实现的代码如下:

void Missiles::Move(int playerX)
{

    angle =atan(playerX - X);

    X=X + sin(angle)*2;

}

其中PlayerX是玩家的X坐标,X是火箭的X坐标。我已使Y坐标以恒定速度变化,因此代码中未显示它们。

要获得瞄准角度,必须考虑Y坐标的差异

angle = atan2(PlayerY - RocketY, PlayerX - RocketX);
另一个问题——在现实和物理学中,火箭速度是有限的。它由垂直和水平组件组成

Vx = V * Cos(angle)
Vy = V * Sin(angle)

我忘了提到火箭是由上面的敌人发射的,它应该朝着底部的玩家飞来。玩家只能在x轴上移动。在你的公式中,火箭似乎没有跟随玩家的移动?是的,我考虑过瞄准敌人。将用PlayerY.X代替Enemy,X。但是火箭的初始状态是什么呢?火箭应该有一个初始速度然后下降,还是应该更像一枚正在寻找的导弹?问题(因此答案)是完全不同的,你的问题很不清楚。导弹应该随时指向玩家,还是应该有一些延迟来面对它,等等。