我有2个值-身体的速度和角度。我需要创建一个使用这两个参数的函数,以计算刷新时应在X轴和Y轴上移动多少。

例:

public Vector getMoveVectorFromSpeedAndAngle(float speed, float angle) {
  //code I need
}

myBody.x = getMoveVectorFromSpeedAndAngle(myBody.speed, myBody.angle).x;
myBody.y = getMoveVectorFromSpeedAndAngle(myBody.speed, myBody.angle).y;



  那你的问题是什么?


如何创建这样的功能?


  您如何存储角度?以弧度还是度?


我使用度数,但是如果需要,我可以切换到弧度。

最佳答案

使用弧度:

public Vector getMoveVectorFromSpeedAndAngle(float speed, float angle) {
    float x = speed * (float)Math.cos(angle);
    float y = speed * (float)Math.sin(angle);
    return new Vector(x, y);
}


而且您可能需要按给定的数量增加身体坐标,而不要分配给它:

myBody.x += getMoveVectorFromSpeedAndAngle(myBody.speed, myBody.angle).x;
myBody.y += getMoveVectorFromSpeedAndAngle(myBody.speed, myBody.angle).y;

10-07 21:06