这可能是一个问题,我根本不知道研究答案的正确术语,我很确定解决方案是触发器的功能。
我有一个接受X / Y位置坐标和角度的方法。它应该根据提供的旋转角度返回更新的X / Y.
例如,A点通常位于x = 0,y = 2(顶部中间)。现在我需要将它旋转到它的侧面90度。在我看来,我知道它的位置现在是x = 2,y = 0(中右)但我不知道产生这个的等式。
我想我需要首先确定起点的象限,然后从那里执行正确的触发功能。这是我使用libgdx开发的游戏,它是Vector2对象的来源。
我到目前为止:
public Vector2 getPointsRotated(Vector2 startPoint, float angle){
Vector2 newPoint = new Vector2(0,0);
// determine the starting quadrant
int quad=0;
if((startPoint.x>=0)&&(startPoint.y>=0)){quad=0;}
if((startPoint.x<0)&&(startPoint.y>=0)){quad=1;}
if((startPoint.x<0)&&(startPoint.y<0)){quad=2;}
if((startPoint.x>=0)&&(startPoint.y<0)){quad=3;}
if(quad==0){
// doesn't work
newPoint.x = (float) ((newPoint.x)* (Math.sin(angle)));
newPoint.y = (float) ((newPoint.y)* (Math.cos(angle)));
}
// ...
// other quadrants also don't work
// ...
return newPoint;
}
感谢您的帮助。
更新: 我一直在避免并回到这个问题几天。现在终于在这里发布了这个问题之后我会在几分钟内解决它(对于使用libgdx的ppl而言)。
Libgdx为Vector2s提供旋转功能 所以像:
Vector2 position = new Vector2(0,2);
position.rotate(angle);
完美无缺。
答案 0 :(得分:0)