在 Flame Game Component Render() 覆盖中计算正确位置时出现问题

问题描述 投票:0回答:1

我有一个自定义火焰游戏 TextComponent,我想在渲染覆盖中绘制额外的东西。我使用 4 个不同的公式来计算位置,但每次尝试都是错误的。这些公式都不会计算粘在移动文本上的圆圈位置。相反,它们的移动就好像涉及某种比例因子一样。有什么想法我做错了吗?

void render(Canvas canvas) {
   super.render(canvas);

   canvas.drawCircle(Offset(position.x, position.y), 10, redPaint);

   Vector2 pos = position / scale.x;
   Component? parent = this.parent;
   while (parent != null) {
       if (parent is PositionComponent) {
           pos -= parent.position / parent.scale.x;
       }
       parent = parent.parent;
   }

   canvas.drawCircle(Offset(pos.x, pos.y), 10, yellowPaint);

   canvas.drawCircle(
       Offset(absolutePosition.x / absoluteScale.x, absolutePosition.y / absoluteScale.y),
       10,
       bluePaint);

   canvas.drawCircle(Offset(position.x / scale.x, position.y / scale.y), 10, greenPaint);
}
flutter position flame-game
1个回答
0
投票

啊 - 看起来在调用 render() 时已经设置了转换,因此绘制到 render() 覆盖内的位置 (0,0) 将绘制到 textComponent 的左上角/左上角,并随之移动:canvas.drawCircle (偏移量.0, 10, redPaint);

© www.soinside.com 2019 - 2024. All rights reserved.