マニュアル: マウスとアナログスティック

このマニュアルについて

このマニュアルでは、ACTION GAME MAKER でマウスとアナログスティックを扱う機能について解説を行います。

ACTION GAME MAKER でのマウス・スティックの概要

ボタンの押し下げは「入力に関する条件(InputCondition)」で扱えますが、マウスの座標やスティックの傾きのように「向きや量を持つ入力」は、それだけでは扱えません。そのための機能が次のものです。

機能 種別 できること
マウス操作(MouseInput) 条件 マウスボタンの状態、カーソルがどこにあるか、カーソルが動いたかを判定します
マウスの情報を変数へ代入(GetMouseInput) アクション カーソルの座標・移動量・自分から見た角度と距離を変数へ入れます
スティックの入力を変数へ代入(GetStickInput) アクション スティックの角度・傾き量・X/Y 成分を変数へ入れます
マウス/スティック角度連動設定(ChangeAngleSettings) 設定ノード ノードの角度をカーソルやスティックの向きに合わせて回します

このほか、既存の機能にもマウス・スティックを使うオプションがあります(後述の「ほかの機能で使う」を参照)。

なお、マウスの座標は「どのレイヤーから見るか」で変わります。ワールド座標を扱うときは、対象のオブジェクト自身を基準に取るのが正しい形です。この 4 つの機能はいずれも自分(実行するオブジェクト)を基準に計算します。

「マウス操作(MouseInput)」

マウスに関する条件です。「その他条件追加」の「マウス」カテゴリにあります。

  • 判定内容: 「ボタンの状態」「カーソルが自分の上にある」「カーソルが指定オブジェクトの上にある」「カーソルが指定範囲にある」「カーソルが動いた」から選びます。
  • マウスボタン: 「ボタンの状態」のとき、「左ボタン」「右ボタン」「中ボタン」「拡張ボタン1」「拡張ボタン2」から選びます。ホイールは扱えません。
  • 入力の条件: 「押されている」「押された瞬間」「離している」「離された瞬間」から選びます。
  • 入力受付フレーム数: 「瞬間」と見なすフレーム数です。
  • 判定範囲: カーソルが乗っているかを何で判定するかです。「壁判定」「当たり判定」「半径指定」から選びます。無効になっている判定は数えません。
  • 判定の半径: 「半径指定」のときの半径(px)です。オブジェクトの原点からの距離で見ます。
  • 対象オブジェクトのパス: 「カーソルが指定オブジェクトの上にある」のときの対象です。
  • 判定する範囲 / 範囲の基準: 「カーソルが指定範囲にある」のときの範囲と、その基準(「画面座標」または「ワールド座標」)です。
  • 動いたとみなす移動量: 「カーソルが動いた」のとき、画面上で何 px 動いたら動いたと見なすかです。

マウスボタンは、この条件で判定してください。入力に関する条件(インプットマップ)経由のマウスボタンは、2 人目以降のプレイヤーでは反応しません。

「マウスの情報を変数へ代入(GetMouseInput)」

カーソルの情報を変数へ入れるアクションです。「その他アクション追加」の「スイッチ/変数」カテゴリにあります。毎フレーム代入されるので、値を使う側は常に最新のカーソル情報を見られます。

  • 代入先: 値を書き込む相手です。「自分自身」「指定のオブジェクト」「指定ロック対象オブジェクト」「親オブジェクト」「最後に接触したオブジェクト」「共有ボードのオブジェクト」「プロジェクト変数」から選びます。アクション全体で 1 つを選び、すべての値が同じ相手へ書き込まれます。
  • ワールドX座標を代入する / ワールドY座標を代入する: ゲーム世界でのカーソル位置です。自分を基準に測るため、所属するレイヤーが考慮されます。
  • 画面X座標を代入する / 画面Y座標を代入する: 画面上でのカーソル位置(px)です。
  • 横の移動量を代入する / 縦の移動量を代入する: 前のフレームからカーソルが画面上で動いた量(px)です。
  • 角度を代入する: 自分からカーソルへの角度です。0 度が右、90 度が下です。カーソルが自分に重なっている間は角度が決まらないため、前の値が保たれます。
  • 距離を代入する: 自分からカーソルまでの距離(px)です。
  • それぞれの代入先: 上のチェックを入れた項目ごとに、書き込む変数名を選びます。

「スティックの入力を変数へ代入(GetStickInput)」

アナログスティックの入力を変数へ入れるアクションです。「その他アクション追加」の「スイッチ/変数」カテゴリにあります。上下左右に割り当てた入力アクションから入力ベクトルを組み立て、円形のデッドゾーンを適用してから代入します。押されているかどうかの判定と違い、正確な角度と「どれだけ倒しているか」を使えます。

  • 上方向の入力 / 下方向の入力 / 左方向の入力 / 右方向の入力: それぞれの向きとして扱う入力アクションです。プロジェクトのインプットマップに追加したアクションから選べます。
  • デッドゾーン: 円形に適用するデッドゾーンです。マイナスの値にすると、4 つの入力アクションに設定されたデッドゾーンの平均を使います。
  • 角度を代入する / 角度の代入先: 入力の角度(度)です。0 度が右、90 度が下です。入力がない間は角度が決まらないため、前の値が保たれます。
  • 傾き量を代入する / 傾き量の代入先: どれだけ倒しているかを 0.0 から 1.0 で受け取ります。歩きと走りを傾きで分けるといった使い方ができます。
  • Xを代入する / Yを代入する とそれぞれの代入先: 入力の X 成分と Y 成分を -1.0 から 1.0 で受け取ります。X は右がプラス、Y は下がプラスです。

「マウス/スティック角度連動設定(ChangeAngleSettings)」

ノードの角度を、カーソルやスティックの向きに合わせて回す設定ノードです。オブジェクトの子として置いて使います。砲台や手に持った武器を狙った方向へ向けるときに使います。

  • 対象ノードを指定: 回転させるノードです。
  • 左スティックを使う / 右スティックを使う / マウスを使う: 角度の入力元です。
  • 移動方向を使う: オブジェクトの移動方向を入力にします。まだ動いていない間はこれから動く方向を使うため、生成した直後から角度が反映されます。
  • 視線の向きを使う: 視線の向きを入力にします。
  • 基本角度: 角度の調整です。素材の正面が右(0 度)からどれだけずれているかを指定します。上向きに描かれた素材なら -90 を入れます。
  • ノードの回転を追加: オンにすると、ノードの元の角度に足し込みます。
  • 上方向の上限角度 / 下方向の上限角度: 回せる範囲です。両方 180 にすると制限なしになります。

ほかの機能で使う

機能 設定 内容
オブジェクトを移動(MoveObject) 移動タイプ = マウスカーソル カーソルの位置へ向かって移動します
テンプレート移動の設定(MovementTemplates) テンプレート移動タイプ = マウスカーソルに追従 カーソルを追いかけ続けます。「カーソル位置に合わせる」をオフにすると、移動速度で追いかけます
視線の方向を変える(ChangeFaceDirection) マウスの座標へ向ける 視線の向きをカーソルの方向にします
弾の飛び方(弾データベース) 照準(スティック / マウス)の方向に飛ぶ 照準の入力元(左スティック / 右スティック / マウス)を選びます。「スティックを倒していないときはマウスを使う」も指定できます
持ち上げた物を降ろす・投げる(ReleaseCarriedObject) 方向の指定方法 = 照準の方向 同じく照準の入力元を選べます

実用例

マウスで狙って撃つ

  • プレイヤーの子に「マウス/スティック角度連動設定」を置き、対象ノードに銃のノードを指定して「マウスを使う」をオンにします。素材が右向きなら基本角度は 0 のままです。
  • 弾データベースの飛び方を「照準(スティック / マウス)の方向に飛ぶ」にして、照準の入力元を「マウス」にします。
  • 「マウス操作」条件で左ボタンの「押された瞬間」を見て、発射アクションへ遷移します。

スティックとマウスの両対応にする

  • 弾の照準の入力元を「右スティック」にして、「スティックを倒していないときはマウスを使う」をオンにします。
  • スティックを倒していればその方向、倒していなければカーソルの方向へ飛びます。コントローラーとマウスのどちらでも遊べるようになります。

クリックで反応するオブジェクト

  • 「マウス操作」条件で判定内容を「カーソルが自分の上にある」にして、カーソルが乗っているかを見ます。判定範囲は「当たり判定」か「半径指定」が扱いやすいです。
  • 同じノードに「マウス操作」条件(ボタンの状態・左ボタン・押された瞬間)を足して、両方を満たしたときに反応させます。

カーソルを追いかける敵

  • テンプレート移動の設定で「マウスカーソルに追従」を選び、「カーソル位置に合わせる」をオフにして移動速度で追いかけさせます。
  • カーソルへぴったり吸い付かせたい(カーソルそのものをオブジェクトにする)場合はオンにします。

傾きで歩きと走りを分ける

  • 「スティックの入力を変数へ代入」で傾き量を変数へ入れます。
  • 変数の条件で「傾き量が 0.7 以上」を見て、走りのアクションへ遷移します。

注意点

  • マウスボタンの判定は「マウス操作」条件を使ってください。インプットマップにマウスボタンを登録して入力に関する条件を使うと、2 人目以降のプレイヤーでは反応しません。
  • ワールド座標は、見る位置(レイヤー)によって変わります。1 つの変数に入れたワールド座標を、別のレイヤーのオブジェクトがそのまま使うと合いません。座標が必要なオブジェクトごとに「マウスの情報を変数へ代入」で取り直すのが確実です。
  • カーソルに吸い付くオブジェクトがカメラの追従対象になっていると、カメラとオブジェクトが互いを押し合って発散し、画面が吹き飛ぶことがあります。カメラの「ドラッグの余白」と「位置のスムージング」を両方使ってください(新規プロジェクトでは既定で有効です)。「移動範囲の制限」は逆効果です。
  • 角度は入力がないと決まらないため、その間は前の値が保たれます(0 度に戻りません)。入力がないことを条件にしたい場合は、傾き量や距離を見てください。
  • スティックのデッドゾーンは入力アクションごとにプロジェクト設定で決まります。「スティックの入力を変数へ代入」ではデッドゾーンを円形に指定できるので、斜め入力の感触が合わないときはここで調整してください。
  • ホイールは押し下げと解放が同じフレームに来るため、「マウス操作」条件では扱えません、インプットマップをご利用ください。