我试图让一个PositionComponent围绕游戏世界中的中心固定点旋转,锚点都在组件本身内,所以我有点难住了。
编辑:只是对于任何其他想做类似事情的人设法让它工作
void update(double dt){
super.update(dt);
double oldRadian = anchorComponent.angle;
anchorComponent.angle += rotation * dt;
anchorComponent.angle %= 2 * math.pi;
double newRadian = anchorComponent.angle - oldRadian;
rotatingComponent.angle = anchorComponent.angle;
double x = rotatingComponent.position.x;
double y = rotatingComponent.position.y;
rotatingComponent.position.x = cos(newRadian) * (x - anchorComponent.position.x) -
sin(newRadian) * (y - anchorComponent.position.y) +
anchorComponent.position.x;
rotatingComponent.position.y = sin(newRadian) * (x - anchorComponent.position.x) +
cos(newRadian) * (y - anchorComponent.position.y) +
anchorComponent.position.y;
}
现在,当变量旋转发生变化时,rotationComponent将围绕anchorComponent(两个positionComponents)旋转。
1条答案
按热度按时间mspsb9vt1#
您可以使用
MoveAlongPathEffect
使组件绕着一个点做圆周运动,然后您可以将其与lookAt
方法结合起来使组件“向内”旋转,使其看起来像是绕着该点旋转。您可能还需要设置nativeAngle
,这取决于您要旋转的PositionComponent
的外观。