如何将vector2s应用于对象的方向/速度

时间:2013-09-09 14:43:37

标签: java android libgdx

我有一个代表方向和幅度(长度)的线段,当我绘制它应该工作的段时。从另一个包含触摸板值的类中提取值getAimArmsRotation。

if (player.getFacingRight()) {
        lOriginX = (player.getPosition().x + Player.SIZEw/2);
        lOriginY = (player.getPosition().y + Player.SIZEh/1.5f);
        //lEndX = lOriginX + (float)Math.cos((player.getAimArmsRotation())/57) * 15f;
        //lEndY = lOriginY + (float)Math.sin((player.getAimArmsRotation())/57) * 15f;
        laserO = new Vector2(lOriginX, lOriginY);
        laserE = new Vector2(lEndX, lEndY);

但是,如果我使用此计算中的向量或浮点数并将它们应用于模型的速度向量,它不会像我认为的那样沿着线段移动模型。

编辑:抱歉打算在我创建问题时附上这张照片。图1是我的线段的外观,当我将构成线段的速度值设置为我的对象时,它沿着图2所示的方向移动。 enter image description here

getAimArmsRotation()只是一个方法,它使用来自另一个类中的触摸板的值设置精灵的旋转。我不认为这些值应该是重要的,因为这些浮点数是我用来给线段的长度和方向,我认为给对象一个x和y浮点数的速度会给它方向与线路相同?

1 个答案:

答案 0 :(得分:-1)

感谢DV,jerks。

尝试沿所需路径发送对象时,我没有考虑对象的原点位置。我只使用LineEnd值,我需要给对象它的原点指向正确计算轨迹或路径。

for (GameObject go: gObjects) {
            if (go.getType() == PROJECTILE_ID) {
        go.getVelocity().x = player.getLineEndX() - player.getLineOrgX();
        go.getVelocity().y = player.getLineEndY() - player.getLineOrgY();
        System.out.println(go.getVelocity().x);
        System.out.println(go.getVelocity().y);
            }
        }