概要
Unity PlayMaker用カスタムアクションの紹介です。
このアクションは、指定した方向ベクトルに基づいて、GameObjectを滑らかに移動させるカスタムアクションになります。
昔の“ドラゴンクエスト”や“風来のシレン”みたいな移動をイメージして下さい。
斜め移動やグリッド単位の移動にも対応しており、補正の有無を切り替えることも可能です。
私の制作したiOS向けマッチ3ゲーム“PICOLT”のプレイヤー移動処理用にグリッド移動のカスタムアクションを作りました。
このアクションは、XYZ軸に対応させたバージョンアップ版になります。
🧩 フィールドの説明
| フィールド名 | 説明 |
| GameObject | 移動させたい対象のGameObjectを指定します。 |
| Move Direction (Vector3) | 入力方向ベクトル。各軸の値が Direction Threshold を超えると、その軸方向に移動します。例: (1, 0, 1) で右+奥へ移動。 |
| Direction Threshold (Float) | 入力として有効とみなす最小値(絶対値)。小さな値を無視して、意図しない移動を防ぎます。例:0.5 |
| Move Units (Float) | 移動距離(ブロック数)。例:1 で1ブロック分移動します。 |
| Move Duration (Float) | 移動にかける時間(秒)。例:0.2 で0.2秒かけて移動します。 |
| Use Normalized Direction (Bool) | ON:方向ベクトルを正規化して距離補正(滑らかな移動) OFF:補正せず、グリッド単位で移動(例:(1,0,1) → (1,0,1) に移動) |
| Is Local (Bool) | ON:ローカル座標で移動 OFF:ワールド座標で移動 |
| Finish Event | 移動完了時に送信されるイベント。次のアクションに繋げたいときに使います。 |
🧪 使用例
例1:右上に1ブロック移動(グリッド単位)
- Move Direction:(1, 1, 0)
- Direction Threshold:0.5
- Move Units:1
- Use Normalized Direction:OFF
→ 結果:(1, 1, 0) にそのまま1ブロック移動
例2:なめらかに斜め移動(距離補正あり)
- Move Direction:(1, 1, 0)
- Direction Threshold:0.5
- Move Units:1
- Use Normalized Direction:ON
→ 結果:(0.71, 0.71, 0) に移動(距離は常に1)
💡 ヒント
補正ONはアナログスティックや自由移動向け、補正OFFはグリッドベースのパズルや戦略ゲームに最適
方向入力は、他のFSMや入力アクションから渡すことも可能です(例:Get Axis Vector など)
ダウンロード
Zipファイルに入っているスクリプトをPlayMakerのActionフォルダー内に適当なフォルダーを作って入れてください。
このスクリプトで何か問題があっても責任は取れませんので、ご理解の上で使用願います。
このアクションが気に入ったら、何か私の作ったゲームを買っていただけると助かります!


コメント