Flutter Flame中SpriteComponent位移后如何保持绕自身中心旋转?
解决SpriteComponent位移后绕自身中心旋转的问题
要让位移后的SpriteComponent保持绕自身中心旋转,核心是确保锚点设置与位置定位的逻辑正确,具体操作如下:
- 初始化组件时先设置
anchor = Anchor.center,再指定position。Flame中组件的position是基于锚点在父坐标系中的坐标,先确定锚点为自身中心,再设置位置,就能保证组件的中心精准落在你指定的坐标上。 - 示例代码:
final sprite = await Sprite.load('your_sprite.png'); final component = SpriteComponent( sprite: sprite, size: Vector2(100, 100), // 自定义组件尺寸 anchor: Anchor.center, // 优先设置锚点为自身中心 position: Vector2(200, 200), // 此时组件中心会定位在(200,200) ); // 动态旋转示例(可在update方法中修改) component.angle = pi / 4;
- 若后续动态修改
position,只要锚点保持为Anchor.center,新位置依然会对应组件中心,旋转时自然会绕自身中心进行。
之前position设为(0,0)时正常,是因为此时组件中心与左上角的视觉偏差不明显;而改为(200,200)时,如果锚点设置滞后,position会默认以组件左上角(Anchor.topLeft)为基准定位,导致旋转轴变成左上角。
内容的提问来源于stack exchange,提问作者webwurm
相关产品推荐
相关产品推荐

