球物理:用方向控制球速度

时间:2017-02-07 14:20:47

标签: c++ directx game-physics

如何以特定角度从地面高度向上射击球?

我尝试过申请ball->update(frameTime)

    velocity.x  = cos(tank->getAngle()) * baseSpeed;
    velocity.y  = sin(tank->getAngle()) * baseSpeed;
    spriteData.x += velocity.x * frameTime;
    spriteData.y += velocity.y * frameTime;

但球只是随机飞过并离开了比赛界面。

帮助?

1 个答案:

答案 0 :(得分:0)

通过阅读视频的评论,似乎存在误解。我认为当乔治说使用toTarget矢量时,他将其视为球的行进线的梯度。不是球实际的最终目的地。从度到弧度的转换也是

((Tank->getangle()*pi)/180).

非矢量形式:

(可能错误的语法但数学是正确的)

velocity.x  = cos((Tank->getangle()*pi)/180) * baseSpeed;
velocity.y  = sin((Tank->getangle()*pi)/180) * baseSpeed;
spriteData.x += velocity.x * frameTime;
spriteData.y += velocity.y * frameTime;

我也确定你的frameTime变量是什么,但如果它按照我想象它的名字工作的方式工作,它可能会引起你的问题。如果您的程序在阅读本文时仍然无法正常工作,那很可能与此有关。