UE4でOculus Riftコンテンツを作る入門記事「この通りにやれば、ほぼねこのるんばが完成する筈」
の続きです
前回のままだとゲームを起動した瞬間にルンバが動き出す(メンバ変数Startedのデフォルト値がTrueなら)ので、Oculus Riftを被る暇がありません。
任意のキーを押したら、一斉に復数のルンバが動き出すように改造しましょう。
イベントディスパッチャーという機能を使って、任意のキーを押した瞬間に復数のルンバを同時に動き出させます。
の続きです
前回のままだとゲームを起動した瞬間にルンバが動き出す(メンバ変数Startedのデフォルト値がTrueなら)ので、Oculus Riftを被る暇がありません。
任意のキーを押したら、一斉に復数のルンバが動き出すように改造しましょう。
イベントディスパッチャーという機能を使って、任意のキーを押した瞬間に復数のルンバを同時に動き出させます。
取り敢えず、ねこのるんばでのPawnクラスであるMyCharacterのブループリントに書いてみます。

イベントディスパッチャーというのを追加します

RoobaStartという名前にしてみました

アクションマッピングを追加します(しなくてもいいです)
こっちはStartRoombaという名前に(別にRoombaStartでもUsagiでも何でもいいです)
左右両方のCtrlキーに設定

InputActionイベントのStartRoomba入力イベントノードを書いて、
イベントディスパッチャーRoombaStartの呼び出しノードを書きます
左側のイベントディスパッチャー欄からドロップするなり、普通にノードを伸ばして検索するなりして書いてください

アクションマッピングを使わないなら、普通にキー入力を拾っても構いません

BP_Roombaに上図右半分のノードを書き足します
※注意点として、「SET」ノードから伸ばして「MyCharacterへキャストする」を検索しても出てこないことです
Get Player Character の青いReturn Valueから伸ばせば見つかります。
「イベントをRoombaStart とバインドする」ノードも同様です。
「MyCharacterへキャストする」のAs My Character C から伸ばせば見つかります。
白線を直接伸ばしても参照が判らないからとか何とかそんな理由だからだそうです。
これで、RoombaStartイベントが起これば、ブーリアン変数StartedがTrueになります。

(□にチェックを入れていれば)

BP_Roombaのメンバ変数Startedのデフォルト値をfalse(チェック無し)にして保存、コンパイルしましょう。

これで、ゲーム開始時には止まっていて、Ctrlキーを押せば、復数のルンバが一斉に動き出すようになります。
レベル上に配置したときの向きへそれぞれ動き出す筈です。
めでたしめでたし
…
んん?
なんでそんな七面倒臭いことするんだ?

BP_RoombaのデフォルトのInput欄 Auto Receive InputをPlayer 0に変更して入力を受け付けて
普通にキー入力を拾って、

これじゃ駄目なのか?
っと思いましたが、やってみたら、ひとつルンバしか動き出しませんでした。

イベントディスパッチャーというのを追加します

RoobaStartという名前にしてみました

アクションマッピングを追加します(しなくてもいいです)
こっちはStartRoombaという名前に(別にRoombaStartでもUsagiでも何でもいいです)
左右両方のCtrlキーに設定

InputActionイベントのStartRoomba入力イベントノードを書いて、
イベントディスパッチャーRoombaStartの呼び出しノードを書きます
左側のイベントディスパッチャー欄からドロップするなり、普通にノードを伸ばして検索するなりして書いてください

アクションマッピングを使わないなら、普通にキー入力を拾っても構いません

BP_Roombaに上図右半分のノードを書き足します
※注意点として、「SET」ノードから伸ばして「MyCharacterへキャストする」を検索しても出てこないことです
Get Player Character の青いReturn Valueから伸ばせば見つかります。
「イベントをRoombaStart とバインドする」ノードも同様です。
「MyCharacterへキャストする」のAs My Character C から伸ばせば見つかります。
白線を直接伸ばしても参照が判らないからとか何とかそんな理由だからだそうです。
これで、RoombaStartイベントが起これば、ブーリアン変数StartedがTrueになります。

(□にチェックを入れていれば)

BP_Roombaのメンバ変数Startedのデフォルト値をfalse(チェック無し)にして保存、コンパイルしましょう。

これで、ゲーム開始時には止まっていて、Ctrlキーを押せば、復数のルンバが一斉に動き出すようになります。
レベル上に配置したときの向きへそれぞれ動き出す筈です。
めでたしめでたし
…
んん?
なんでそんな七面倒臭いことするんだ?

BP_RoombaのデフォルトのInput欄 Auto Receive InputをPlayer 0に変更して入力を受け付けて
普通にキー入力を拾って、

これじゃ駄目なのか?
っと思いましたが、やってみたら、ひとつルンバしか動き出しませんでした。
コメント