在此输入图像描述 我尝试使用火焰引擎在颤动中制作泡泡射击游戏的模拟器。 我根据图像向我的游戏添加了一个箭头(SpriteComponent)。 我尝试制作一个气泡(CircleComponent),从箭头位置发射到我瞄准箭头的角度。
我尝试过处理数学和不同的数字。 甚至询问聊天 gpt 但这没有帮助。 我得到的最接近的是,发射方向与箭头角度完全相反。
class Arrow extends SpriteComponent {
@override
FutureOr<void> onLoad() async {
sprite = await Sprite.load('arrow.png');
size = Vector2(gameWidth * 0.15, gameHeight * 0.20);
anchor = Anchor.bottomCenter;
position = Vector2(0, gameHeight / 2);
}
void aimAt(double dt) {
double rotationSpeed = 0.02;
angle += rotationSpeed * dt;
angle %= 2 * math.pi;
}
}
以及启动功能中的用法 -
void launchBubble(double angle, double speed, Arrow arrow) {
isMoving = true;
double launchAngle = arrow.angle + math.pi / 2;
double dx = math.cos(launchAngle) * speed;
double dy = math.sin(launchAngle) * speed;
velocity = Vector2(dx, dy);
}
我得到的最接近的是发射方向与箭头角度完全相反。
这是因为Flame中的坐标系被翻转了,它是一个屏幕坐标系,越往下Y就越大。
要进行交换以便朝正确的方向启动,请将最后一行更改为此(否定
dy
):
velocity = Vector2(dx, -dy);
对于旋转,如果您想要平滑旋转,可以将
RotateToEffect
与 angleTo
结合使用,或者如果您希望直接旋转但角度正确,则可以使用 lookAt
,请参阅以下示例:https:// example.flame-engine.org/#/Components_Look_At(按 < >
获取代码)。