ACTION GAME MAKER では、タイルエフェクトのエリア値が、タイルに接触または重なっているオブジェクトの stayed_area_id 変数を自動的に更新します。
これにより、タイルに値を事前に定義することで、オブジェクトが現在相互作用しているタイルの種類を認識できるようになります。
タイルエフェクトの詳細はこちら:
GameObject で**「タイルエフェクトを有効化」がオンになっていること、およびタイルエフェクトが正しいターゲットグループを指定**していることを確認してください。
アイデア: 通過可能なプラットフォーム
特定のプラットフォームタイル上で下キーを押している間、衝突を一時的に無効化することで、プレイヤーがそのタイルを通過できるようにします。
タイルの設定
- 通過可能なプラットフォームとして使用するタイルを選択します。
- **検出モードを「接触」**に設定し、ターゲットグループを割り当てます。
- エリア値を有効化し、カスタム ID(例:
10)を設定します。
- (オプション)
Physics > Physics Layer > Polygonの下で一方向衝突を有効化し、方向を上に設定して、上からのみブロックするようにします。
上からの落下はオブジェクト側で処理されます。
オブジェクトの設定
- ターゲットオブジェクト(例: プレイヤー)のビジュアルスクリプトを開きます。
- 「PassThrough」という新しいステートを作成します。
- 以下の条件で、Idle/Standing からこの新しいステートへの遷移を追加します:
- 変数
stayed_area_id == 10かつ 下入力が押されている。
- 「PassThrough」ステート内で、以下のアクションを追加します:
- オブジェクトの壁衝突を無効化(CollisionShape2D >
disabled = true) - 0.3 秒待機。
- 壁衝突を再有効化(
disabled = false)
- 0.3 秒後に、落下ステートへ遷移します。
結果: 指定されたタイル上に立ちながら下キーを押すと、プレイヤーは一時的に衝突を失い、プラットフォームを通過して落下します。
落下が鈍重または不安定に感じる場合は、待機時間を増やしてみてください。
AnimationPlayer を使用して、キーフレーム経由で衝突のオン/オフを制御することも可能です。ただし、ステート変更前に衝突を復元することを確認してください。
アイデア: はしご登り
似た概念です。特定のタイル(はしご)上で上キーを押すと、重力を無効化して上方向へ移動することで登ることができます。
タイルの設定
- はしごとして使用するタイルを選択します。
- 検出モードを接触に設定し、ターゲットグループを割り当てます。
- エリア値を有効化し、カスタム ID(例:
20)を設定します。
オブジェクトの設定
- ターゲットオブジェクトのビジュアルスクリプトを開きます。
- 「Climbing」という新しいステートを作成します。
- 以下の条件で、Idle から「Climbing」への遷移を追加します:
stayed_area_id == 20かつ 上入力が押された瞬間(連続した登りを防ぐため)
- 「Climbing」ステート内で:
- 重力を無効化。
- 指定方向への移動アクションを使用して上方向(270°方向)へ移動。
- 以下の条件で、「Climbing」から停止/落下ステートへの遷移を追加します:
stayed_area_id != 20または- 入力が検出されない。
結果: はしごの近くで上キーを押すと登り始め、離すか頂上に到達すると登りが停止します。
登りが止まらない場合は、トリガーが「押された瞬間」に基づいているか、「押されている」に基づいていないか確認してください。
はしごの頂上には、立つための一方向タイルまたは衝突形状を配置してください。
途中で一時停止するには、重力が無効化された停止ステートを作成し、再度上キーが押されたときに登りステートへ再進入できるようにします。

