2023-05-02
JoystickComponent
を使うと画面上にバーチャルスティックを簡単に表示することができます。
knob
でスティック部分、background
で背景を指定します。
位置はmargin
かposition
で調整します。
それではやってみます。
まずはメンバーを用意します。
late final RectangleComponent _rect;
late final JoystickComponent _joystick;
final _speed = 10.0;
次に四角形を初期化します。
_rect = RectangleComponent(
position: Vector2(size.x * 0.5, size.y * 0.5),
size: Vector2.all(size.x * 0.1),
anchor: Anchor.center,
);
await add(_rect);
ジョイスティックの初期化をすれば準備は終わりです。
_joystick = JoystickComponent(
knob: CircleComponent(
radius: 16,
paint: BasicPalette.white.withAlpha(200).paint(),
),
background: CircleComponent(
radius: 40,
paint: BasicPalette.white.withAlpha(100).paint(),
),
margin: const EdgeInsets.only(
left: 16,
bottom: 32,
),
);
await add(_joystick);
後はupdate
で値を読み取り、Rect の位置に反映させます。
ここではdelta
で得られる Vector2 をそのまま利用しています。
delta
は傾きに応じた値(0〜± ジョイスティックのサイズ)が返ってくるので、これを速度として使うと傾きによって動く速さが変わります。
それを避けたい場合はdelta
の値を見て処理するか、代わりにdirection
で取れる向きを使うなどの対応が必要になります。
@override
void update(double dt) {
super.update(dt);
_rect.position += _joystick.delta * _speed * dt;
}
これでコンポーネントを動かせるようになりました。
© 2023 tnantoka