このマニュアルについて
このマニュアルでは、ACTION GAME MAKER に搭載されたオブジェクトの持ち上げ/投げの機能について解説を行います。
ACTION GAME MAKER での持ち上げと投げの概要
持ち上げと投げは、実行アクション「オブジェクトを持ち上げる(CarryObject)」と「持ち上げた物を降ろす・投げる(ReleaseCarriedObject)」によって実行することができます。どちらも「その他アクション追加」のオブジェクト操作カテゴリにあります。
この 2 つのアクションは、マップに配置済みのオブジェクトそのものを掴みます。「オブジェクト接続(BindObjects)」がシーンから新しい個体を生成して連結するのに対し、こちらは既存の個体を掴むため、掴んだ物は自分の変数・スイッチ・体力・見た目・アニメーションをそのまま保ったまま運ばれます。ツボや岩を持ち上げて投げる、爆弾を拾って放る、気絶した敵を担いで運ぶ、といった動作を作れます。
持ち上げている間は、相手の壁判定・当たり判定・攻撃判定・移動を止めることができます。ここで止めたもの、およびこのアクションで変更した変数・スイッチは、降ろした(投げた)ときに自動で元へ戻ります。
接続点(Connector)
持ち上げた物は、自分の接続点(Connector)に取り付けられます。オブジェクト制作で、持ち上げる側のオブジェクトに接続点を追加し、頭の上や手元など、物を持つ位置に置いてください。
接続点を指定しなかった場合は、オブジェクトの中心で持ちます。接続点を分けておけば、1 体で複数の物を同時に持つことができます(頭の上にツボ、手元に爆弾など)。
持たれる側の作り方
持ち上げアクションには「相手の値を変更」という欄があります。ここで持ち物のスイッチ/変数を書き換え、持ち物側は「スイッチ・変数が変化した(SwitchVariableChanged)」の条件で自分のアクションへ移る、という組み方を推奨します。
- 持ち上げる側では、相手のスイッチ「持たれ中」を ON にします(解除時に戻す)。
- 持ち物側では、「持たれ中」が ON になったら「持たれている」アクションへ遷移します。
- 投げる側では、相手のスイッチ「投げられた」を ON にします。
- 持ち物側では、「投げられた」が ON になったら「飛んでいる」アクションへ遷移します(攻撃判定オン、壁に当たったら消滅+破片エフェクト)。
こうしておくと、持ち上げる側は相手のアクション構成を一切知る必要がありません。約束事はスイッチ名だけなので、ツボでも岩でも爆弾でも敵でも、同じ持ち上げノード 1 つで扱えます。
「オブジェクトを持ち上げる(CarryObject)」の設定
相手の指定方法
持ち上げる相手の決め方を、次の 4 つから選びます。
| 指定方法 | 内容 |
|---|---|
| 一番近いオブジェクト | ターゲットグループ・距離範囲・正面で絞り込み、その中で最も近いものを持ち上げます |
| 最後に接触したオブジェクト | 接触条件で取得したオブジェクトを持ち上げます |
| 指定ロック対象オブジェクト | このオブジェクトがロックしたオブジェクトを持ち上げます |
| 共有ボードのオブジェクト | 共有ボード(Blackboard)のオブジェクト参照キーに記録されたオブジェクトを持ち上げます |
「一番近いオブジェクト」を選んだときだけ、次の 3 つが表示されます。
- ターゲットグループを指定: 「すべてのオブジェクト」以外を選ぶと、そのオブジェクトグループに属するものだけが候補になります。持てる物を「持てる」グループにまとめておくのが簡単です。
- 距離範囲(0で無制限): 指定した距離(px)以内のものだけを候補にします。初期値は 48px です。
- 正面にあるものだけ: 自分が向いている側にあるものだけを候補にします。
すでに誰かに持たれているオブジェクトは、候補に入りません。
相手を選ぶ条件
「重さが 100 以下の物だけ持てる」「裏返っているときだけ持てる」のように、相手の変数/スイッチを見て、持てるかどうかを決めることができます。
- 条件の種別: 「条件なし」「スイッチ」「変数」から選びます。
- 条件の対象名: 見る相手のスイッチ名/変数名です。名前の候補は「相手の代表シーン」から列挙されますが、実行時は名前で相手を解決するため、同じ名前のスイッチ/変数を持つオブジェクトであれば、代表シーンと違う種類でも動作します。
- 条件の比較方法(変数のとき): 「=」「!=」「<」「<=」「>」「>=」から選びます。
- 条件の値の取得元: 「コンスタント」「自分の変数」「プロジェクトの変数」から選びます。
条件を満たさないオブジェクトは候補から外れます。「一番近いオブジェクト」で探すときも候補を絞る段階で判定するため、手前にある持てない物が、奥の持てる物を隠してしまうことはありません。
取り付け
- 取り付ける接続点: 持ち上げる位置になる接続点です。空にすると中心で持ちます。
- 位置の補正: 接続点からさらにずらしたいときに指定します。
- 表示方向を引き継ぐ/角度を引き継ぐ/スケールを引き継ぐ: 持ち上げた物を、自分の向き・角度・大きさに合わせます(いずれも初期値 ON)。
- 表示の優先度を下げる: 持ち物を自分より後ろに描画します。自分と持ち物が別レイヤーにある場合は効果がありません。
- 持っている物と持ち替える: 同じ接続点に何か持っているときの動作です。ON(初期値)なら先に持っている物を降ろして持ち替え、OFF なら何もしません。
持ち上げている間
持ち上げた瞬間にコリジョンが暴れないよう、既定で相手の判定と移動を止めるようになっています。
- 壁判定を無効にする(初期値 ON): 持ち物が運び手を押しのけて、横に弾かれたり移動が遅くなったりするのを防ぎます。
- 当たり判定を無効にする(初期値 ON): 持ち物がダメージを受けなくなります。
- 攻撃判定を無効にする(初期値 OFF): 持ち物の攻撃判定を止めます。持ったまま敵に当たってほしくない場合に ON にします。
- 移動を止める(初期値 ON): 持ち物の移動処理を止めます。重力や強制移動エリアからの速度も受け付けなくなるため、持っている間に速度が溜まって、降ろした瞬間に暴発することがありません。
ここで無効にしたものは、降ろす/投げるときに、持ち上げる前の状態へ戻ります(元から切ってあった判定が勝手に復活することはありません)。なお持ち物のビジュアルスクリプトは止まらないので、持たれている間もアクションの遷移や演出を動かせます。
相手の値を変更/自分の値を変更
持ち上げたときに、相手(持ち物)と自分(運び手)のスイッチ/変数を 1 つずつ変更できます。
- 相手の値を変更/自分の値を変更: 「変更しない」「スイッチ」「変数」から選びます。
- 対象名: 変更するスイッチ名/変数名です。
- 演算子(変数のとき): 「=」「+=」「-=」「*=」「/=」「%=」
- 値の取得元: 「コンスタント」「自分の変数」「プロジェクトの変数」から選びます。
- 解除時に相手の値を戻す/解除時に自分の値を戻す(初期値 ON): 降ろした・投げた・持ち物が消えた・運び手が消えた、いずれの場合でも元の値へ戻します。運び手の「持っている」スイッチがこれで確実に OFF に戻るため、持ち物が壊れたときに持ち上げポーズで固まることがありません。
「持ち上げた物を降ろす・投げる(ReleaseCarriedObject)」の設定
対象
- 持っている物すべて: ON にすると、接続点を問わず、持っている物すべてを降ろします。
- 対象の接続点: どの接続点の持ち物を降ろすかを指定します。空にすると、中心で持っている物が対象です。
接続点を空にした場合は「中心の持ち物」だけが対象になります。「すべて」の意味にはならないため、複数の接続点で持っているものを一度に降ろしたいときは「持っている物すべて」を使ってください。
相手を選ぶ条件
持ち上げ側と同じ形式で、相手の変数/スイッチを見て、降ろせるかどうかを決められます。条件を満たさない持ち物は対象から外れ、そのまま持ったままになります。「重すぎて投げられない」といった表現に使えます。
投げる方向の指定方法
| 指定方法 | 内容 |
|---|---|
| 自分の表示方向 | 運び手が向いている方向へ投げます |
| 角度を指定 | 「方向(角度)」で指定した角度へ投げます(0 度が右、正の値で時計回り) |
| 照準の方向 | スティックやマウスの照準方向へ投げます。入力が無いときは表示方向へ投げます |
| 角度を変数で指定 | 変数・データベースから角度を読んで投げます |
| 自分の角度 | 自分(ルート)の回転方向へ投げます。回転する砲台のように、投げた瞬間の角度をそのまま使いたいときに向いています |
- 基本角度(「自分の角度」のとき): 素材の正面が右(0 度)からどれだけずれているかを指定します。上向きに描かれた素材なら -90 を入れます。「マウス/スティック角度連動設定(ChangeAngleSettings)」の基本角度と同じ意味です。
- 照準の入力元/スティックを倒していないときはマウスを使う(「照準の方向」のとき): 左スティック・右スティック・マウスから選びます。
投げる初速
- 前方向の初速: 指定方向へ与える初速です。0 にすると、その場に降ろします。
- 上方向の初速: 上方向へ与える初速です。前方向と組み合わせると、放物線を描いて飛びます。
- 自分の速度を加算する: 運び手の現在の速度を投げに加算します。走りながら投げると遠くへ飛びます。
- 投げた物を自分に当てない時間(初期値 0.2 秒): 投げた直後、投げた物が自分に当たらないようにする時間です。親子関係による攻撃判定の除外は降ろした瞬間に切れるため、投げた物に攻撃判定を持たせる場合は、この時間が必要です。0 にすると除外しません。
上方向の初速は、方向指定の後から加算されます。指定した角度どおりにまっすぐ飛ばしたいときは、上方向の初速を 0 にしてください。
相手の値を変更/自分の値を変更
投げる/降ろすときに、相手と自分のスイッチ/変数を 1 つずつ変更できます。持ち上げ時の変更を元へ戻す処理はアクション内部で自動的に行われるため、こちらは投げたとき固有の追加分だけを設定します(「投げられた」スイッチを ON にする、など)。このアクションで書いた値は元へ戻りません。
自動で解除されるとき
次の場合は、アクションを置かなくても持ち上げが解除され、無効にした判定と、変更した値が元へ戻ります。
- 「持ち上げた物を降ろす・投げる」を実行したとき
- 持ち物が消滅したとき(運び手側の値が戻ります)
- 運び手が消滅したとき(持ち物側の判定と値が戻ります)
- 同じ接続点で別の物を持ち替えたとき
- 「オブジェクトを変更(ChangeObject)」で、運び手または持ち物が別のオブジェクトへ変わったとき(持ち上げ状態が引き継がれます)
降ろした直後の 0.2 秒は、運び手と持ち物が押し合わないようになっています。持ち物は運び手と重なった位置に残るため、この猶予がないと、降ろした瞬間に押し出されて飛んでいってしまいます。
持ち上げの実用例
ツボを持ち上げて投げる
プレイヤー側は、ビジュアルスクリプト 2 ノードで組みます。
決定ボタン + 「持てる」グループが正面 48px 以内 →「オブジェクトを持ち上げる」
- 相手の指定方法 = 一番近いオブジェクト(グループ「持てる」/距離 48/正面のみ)
- 取り付ける接続点 = 頭の上の接続点
- 持ち上げている間 = 壁判定オフ/当たり判定オフ/攻撃判定オフ
- 相手の値を変更 = スイッチ「持たれ中」を ON(解除時に戻す)
- 自分の値を変更 = スイッチ「持っている」を ON(解除時に戻す)
攻撃ボタン →「持ち上げた物を降ろす・投げる」
- 対象の接続点 = 頭の上の接続点
- 前方向の初速 = 300 / 上方向の初速 = 100
- 相手の値を変更 = スイッチ「投げられた」を ON
ツボ側は、次のように組みます。
- スイッチ「持たれ中」が ON →「持たれている」アクション(移動なし)
- スイッチ「投げられた」が ON →「飛んでいる」アクション(落下・攻撃判定オン)
- 壁・床・敵に接触 → 消滅+破片エフェクト
重すぎる物は投げられない
「持ち上げた物を降ろす・投げる」の「相手を選ぶ条件」に、変数「重さ」が 100 以下、と設定します。重い物は持ち上げられても投げられず、持ったままになります。降ろすだけの別アクション(初速 0、条件なし)を用意しておけば、「重い物は運んで置くだけ」という遊びが作れます。
拾って投げる爆弾
爆弾側で、スイッチ「持たれ中」が ON になったら導火線アクションへ移り、一定時間後に爆発するようにします。持ち上げアクションで攻撃判定を無効にしておけば、持っている間は自分が爆風で傷つきません。投げる側で「投げた物を自分に当てない時間」を長めにしておくと、投げた直後の自爆を防げます。
注意点
- セーブには対応していません。持ったままセーブしてロードすると、持ち物は元の位置に戻ります。
- シーン遷移では持ち越されません。別のマップへ移動すると、持ち物は置いていくことになります。
- 投げた物にダメージを持たせる場合は、「投げた物を自分に当てない時間」を必ず設定してください。0 にすると、投げた瞬間に自分へ当たることがあります。
- 「表示の優先度を下げる」は、運び手と持ち物が同じレイヤーにある場合のみ効果があります。
- 「移動を止める」を OFF にすると、持ち上げている間も重力や強制移動エリアの力を受け続けます。降ろした瞬間の挙動が乱れる場合は、ON に戻してください。