今回はプレイヤーごとに移動速度やジャンプ力を変化させるギミックをつくってみましょう。
こちらの記事ではすべてのプレイヤーの移動速後やジャンプ力を変える方法を解説しましたが、今回紹介する方法はゲームワールドでアイテムを手に入れたプレイヤーだけ移動速度をアップさせたい場合などに使うことができます。
ボタンを押すと移動速度が変わる
まずはシンプルなものをつくってみましょう。
- Hierarchyを右クリック、または上部メニューのGameObjectからCreate Emptyを選択して新しい空のGameObjectを作成します。
- 名前は「PlayerGimmick」としておきます。
- PlayerGimmickを選択してInspectorを開き、Add ComponentからSet Move Speed Rate Player Gimmickを追加します。
- Set Move Speed Rate Player GimmickのTargetがPlayer、KeyがmoveSpeedとなっていることを確認してください。
- この状態であれば、それぞれのプレイヤーに対してFloat型の「moveSpeed」メッセージが発行されたときに、その値に応じて移動速度が変化します。Globalへのメッセージには反応しません。

続いてボタンをつくりましょう。
- もうひとつ新しいGameObjectを作成します。名前は「SpeedButton」としてください。
- SpeedButtonのInspectorで、Add ComponentからInteract Item Triggerを追加します。
- Interact Item Triggerコンポーネントの+ボタンでトリガーをひとつ追加し、Targetを「Owner」、Keyを「moveSpeed」、Valueを「Float」「2」としてください。
- また、HierarchyでSpeedButtonを右クリックして、子オブジェクトにCubeを追加します。Cubeの大きさはTransformのScaleで調整します。
- Interact Item TriggerのTargetに「Owner」を指定すると、アイテムをクリックしたプレイヤーに対してメッセージを発行します。

ここまでできたらアップロードして確認してみましょう。ボタンをクリックすると移動速度が2倍になります。

この記事ではSet Move Speed Rate Player Gimmickを使って移動速度を変化させる方法を解説しますが、代わりにSet Jump Height Rate Player Gimmickを使い、またKeyを「moveSpeed」から「jumpHeight」に置き換えると同様にジャンプ力を変化させることができます。
色々な条件で移動速度を変えてみる
上のようにSet Move Speed Rate Player Gimmickを設定した状態であれば、さまざまなTriggerから移動速度を変更させることができます。
アイテムを持つと移動速度が上がり、手放すと元に戻る
例えば「アイテムを持つと移動速度が上がり、手放すと元に戻る」という仕組みをつくってみましょう。
- 新規GameObjectを作成し、Grabbable Itemコンポーネントを追加します。
- さらにOn Grab Item Triggerを追加してください。
- On Grab Item Triggerコンポーネントで先ほどのInteract Item Triggerと同様に+ボタンでトリガーをひとつ追加し、Targetを「Owner」、Keyを「moveSpeed」、Valueを「Float」「2」としてください。
- また、On Release Item Triggerも追加します。こちらも同様に設定しますが、Valueの値は「1」にします。Set Move Speed Rate Gimmickで設定する速度は初期値に対する倍率なので、1を指定すると元の速度に戻ります。
- 子オブジェクトとしてCubeを作成することも忘れないでください。

アップロードして確認してみましょう。

一定の範囲に入ったときだけ速度を変える
また、一定の範囲に入ったときだけ速度を変えることもできます。
- 新しいGameObjectを作成し、Box Colliderを追加します。
- Box ColliderコンポーネントのIs Triggerにチェックを入れ、CenterとSizeに数値を入力するか、Edit Coliderボタンを押してコライダー範囲(緑の枠線の範囲)を速度変化させたいエリアに合わせます。
- 続いてOn Collide Item Triggerを追加し、Collision Event Typeが「Enter」になっていることを確認します。
- +ボタンでトリガーを追加し、Targetを「CollidedItemOrPlayer」、Keyを「moveSpeed」、Valueを「Float」「0.5」としてください。
- さらに、もうひとつOn Collide Item Triggerを追加※し、こちらはCollision Event Typeを「Exit」に変更します。
- ※+ボタンではなくコンポーネント自体を追加します
- 同様にトリガーを設定し、こちらはValueの値を「1」にします。
- Collision Event TypeがExitの場合、コライダーから離れたときにトリガーが反応します。

アップロードして確認してみましょう。

他にもPlayer Logicを使って段階的に速度を変化させるなど、さまざまな応用ができます。
ゲームワールドだけでなく、探索ワールドのサポートアイテムなどにも使ってみましょう!