【问题标题】:Advice on calculating the movement vector from an angle从一个角度计算运动矢量的建议
【发布时间】:2014-09-05 05:23:30
【问题描述】:

我正在尝试计算给定角度的射弹的运动矢量(每帧改变 x 和 y 的程度)。

我尝试 x = Acos(angle), y = Asin(angle) 来获取值,但弹丸运动的方向似乎从未与角度匹配。

基本上我希望抛射物像在闲置线一样移动。

我正在使用 XNA 框架用 C# 编写此代码,非常感谢任何和所有建议

【问题讨论】:

    标签: math vector xna


    【解决方案1】:

    试试这个:

    x=x0+v*cos(ang)*t
    y=y0+v*sin(ang)*t
    vx=v*cos(ang)
    vy=v*sin(ang)
    vx0=cos(ang)
    vy0=sin(ang)
    
    • x,y,是子弹的时间位置
    • vx,vy 是子弹速度向量
    • vx0,vy0 为子弹方向单位向量
    • x0,y0是bulet起始位置
    • v 是子弹速度
    • t 是从拍摄开始经过的时间(在位置 x0,y0)
    • ang 是子弹的角度(确保角度的单位是正确的 sin,cos 在您的平台上的弧度/度)
    • 如果您的角度与您的屏幕坐标系不匹配,那么您将不得不反转一个轴(通常是 y)

    【讨论】:

    • 我认为您应该在等式中删除 x0y0。更改为例如x=v*cos(ang)。当前弹丸位置与其速度矢量无关(在这种情况下)。
    • @Floris 是的,正如我在答案末尾所写的那样,我给出了位置方程,因为这就是他最终需要的。很难准确地说出他的运动矢量是什么......
    • 然后还是不行。增量位置矢量例如是x=x+v*cos(ang) 在哪里初始化 x=x0。
    • @Floris oow 我现在看到了我忘记添加 *t ...(我教过它在那里...我将在一秒钟内编辑)
    • @user3243638 我看到你是新用户所以......如果问题得到回答,请检查正确答案附近的复选标志(它会给作者积分并标记解决方案供其他人快速查看)如果它仅在某种方式上有所帮助,您可以通过单击上方的三角形来投票,或者如果它是错误的harm-full abusive ...然后您可以通过下方的三角形投票(每个问题或答案只能投一票) )我认为这也会奖励你一些徽章......如果你有足够的积分,你也可以投票给cmets。也所有的投票都可以撤消所以不用担心
    猜你喜欢
    • 2014-05-28
    • 1970-01-01
    • 1970-01-01
    • 2019-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多