‫こんにちは､ ようこそ｡
‫このレクチャーでは､ 小さな障害物用アサルトコースを作り､ キャラクターを押し出すための小さなプッシャープラットフォームを実装していきます｡
‫これを実現するためには､ キャラクタークラスにちょっとした修正を加える必要があります｡
‫では､ どんなものなのか､ 飛び込みで見てみましょう｡
‫そこで､ この「動くプラットフォーム」という基本的な要素を使ったもうひとつのパズルとして､ 「プッシャー」と呼ばれる､
‫棚から突き落とすような仕掛けを考えています｡
‫さて､ このようにするには､ ここにある立方体を使います｡
‫パズルキューブAというのがあると思うんですが､ あれは本来プッシャーとなる立方体でもいいんです｡
‫そして､ ムービングプラットフォームとは少し違った構成にします｡
‫右クリックして､ 「ここに移動」をクリックすると､ カメラにピントが合うようになります｡
‫そして､ コンテンツに移動し､ C++クラスに移動し､ 検索をクリックし､ Obstacle Saltに移動し､ 移動プラットフォームを右クリックし､
‫それを基に新しいブループリント・クラスを作成します｡
‫今回はBPアンダースコアのプッシングキューブみたいなのを呼んでみます｡
‫そこで､ コンテンツのルートに入れ､ Create Blueprint Classをクリックします｡
‫これでコンテンツブラウザを閉じることができる｡
‫なぜかあれを出したがるので､ コンテンツの引き出しから､
‫コンテンツのルートに行き､ パズルキューブとか一言で検索しています｡
‫アヤ それはこちらのメッシュのことですね｡
‫ブループリント・クラスにドラッグインして､ コンテンツを閉じて､ コンパイル結果を閉じて､ ビューポートをもう少しよく見えるようにするつもりです｡
‫そして､ このキューブはデフォルトではかなり小さいので､ 実はスケールアップしたいのです｡
‫あらゆる次元で少なくとも10倍は大きくするつもりです｡
‫そこで､ scaleプロパティの横にある小さな南京錠を押して､ それぞれのスケールが基本的に同じになるようにします｡
‫そして､ そのうちの1つを10に変更し､ 残りの2つも同様に10にスケールアップすることにしています｡
‫そして､ これからやることは､ 移動の方向を変えることです｡
‫つまり､ 現在はXの方向に動いているわけです｡
‫そして､ このシーンを見ると､ それが基本的に順方向であることがわかります｡
‫左右に動かしたい｡
‫もちろん､ シーンに入れた後に回転させればそれほど問題にはなりませんが､
‫Xをゼロに変更し､ 避けるべき障害物であるためには､ それなりの速度が必要なのです｡
‫だから､ 300にして､ 移動距離もかなり大きくしようと思っているんです｡
‫だから､ まずは最低でも500枚にしようと思っています｡
‫そしてもちろん､ これをレベル内に配置した後､ 再度設定することができます｡
‫では､ これを保存して､ レベルに入って､ このキューブを配置してみましょう｡
‫コンテンツのドローで検索をキャンセルして､ コンテンツのルートに行き､ プッシングキューブをドラッグしてみます｡
‫絶対的な質量がある｡
‫確かに目盛りは大きくずれてしまいましたね｡
‫では､ CubeでプッシュするためのBlueprintクラスに戻りましょう｡
‫scaleプロパティを見て､ 多分4倍にしたいだけなんだろうけど､ このスケールロックをオンにしてやっていることに注意｡
‫だから､ あらゆる次元で4倍の大きさにして､ レベルの中に戻っていくんです｡
‫そして､ これはもうかなり合理的に見えてきました｡
‫だから､ 実際に少し地面に食い込んでいるのがわかると思います｡
‫つまり､ ワールドでキューブを持ち上げて解決することもできますし､ Pushing Cubeクラスで実際にキューブを持ち上げて解決することもできるのです｡
‫だから､ それくらいは持ち上げないといけないと思うんです｡
‫ドラッグアップを始めて､ まともに見えるものを見てみよう｡
‫200ぐらいで接地面に置くと思います｡
‫それを保存して､ 元のシーンに戻ります｡
‫そして､ そこにあるのは
‫正しそうです｡
‫あとは､ プレーヤーと重なるように移動させるだけです｡
‫再生ボタンを押してみると､ 前後に動いているのがわかると思います｡
‫後ろにも後ろにもあまり動いていない｡
‫だから､ それを変える必要があると思うんです｡
‫クラスに戻って､ クラス､ デフォルト､ 移動距離にしてみましょう｡
‫そうやって最低でも1500は必要だと思うんです｡
‫また､ 好みの問題かもしれませんが､ 移動方向を反対に設定したい場合もあります｡
‫そこで､ メインウィンドウに戻り､ キューブを左側にドラッグしてみましょう｡
‫再生ボタンを押してみましょう｡
‫そして､ そこに行く｡
‫非常にゆっくりと過ぎていきます｡
‫だから､ スピードに不満があるんです｡
‫そのスピードを変えてみよう｡
‫最低でも3倍速は必要だと思います｡
‫では､ 900回のヒットプレイにしましょう｡
‫そして､ そこにあるのは
‫もう少しの辛抱です｡
‫しかし､ バグも発生しています｡
‫私たちのキャラクターは､ このプッシングキューブによって､ あまり理にかなった､ いい意味で押されないんです｡
‫グリッチしているのがわかりますね｡
‫スムーズじゃないんです｡
‫しかし､ ちょっとした回避策にご注目いただきたい｡
‫ぶつかっている間に移動しようとすると､ 実はとてもスムーズにできていることに気づきますが､
‫これは､ 文字コードが､ 移動しようとしない限り､ 実際には衝突をチェックしないからです｡
‫そこで､ ちょっとした回避策があるんです｡
‫これから作成したBPの三人称キャラクターを見に行きます｡
‫コンテンツ ドローを使用するか､ シーンでキャラクタを選択し､ 詳細ペインでブループリント
‫ボタンをクリックし､ 「Open Blueprint Editor」をクリックします｡
‫そして､ 基本的に1目盛りごとに､ キャラクターを少し左に動かし､ 少し右に戻すということを行いたいのです｡
‫さて､ この方法では､ キャラクタ移動コンポーネントと呼ばれるキャラクタ上のコンポーネントを使用します｡
‫コンポーネントペインでこれを選択し､ ブループリントのイベントグラフで右クリックし､
‫更新されたコンポーネントを移動するを検索します｡
‫基本的にこの関数が行うことは､ 指示することである｡
‫キャラクタを移動させるために､ そのキャラクタ移動ルールを使用する必要があることを移動コンポーネント｡
‫このように､ 基本的には「これだけ動けばいい」というデルタをとっていることがわかります｡
‫そして､ 途中で衝突しないように注意するスイープを搭載しています｡
‫だから､ 基本的にXとYに1センチずつ､ 非常に素直な動きをさせることができます｡
‫Z軸で動くかどうかはあまり重要ではなく､ そのような衝突は求めていないからです｡
‫次に､ ティックを取り､ 実行ピンを移動にドラッグします｡
‫コンポーネントを更新しました｡
‫そして､ このままにしておくと､ だんだんとキャラクターが流れていってしまうという問題があるのです｡
‫再生を押すと見せてくれる｡
‫キャラクターが徐々に1cmずつコマ送りされ､ シーン上を漂っているのがわかる｡
‫だから､ 私たちがやるべきことは､ 後ろへ下がることでもあるのです｡
‫そこで､ キャラクターの移動コンポーネントをここにドラッグして､ もう一度このピンからドラッグして､ 移動先をもう一度探してみます｡
‫コンポーネントを更新しました｡
‫実行ピンをスレッド化して､ 最初の移動更新コンポーネントの後に呼ばれるようにするんだ｡
‫そして､ デルタをXでマイナス1､ Yでマイナス1にするんです｡
‫そのため､ 最終的には何も起きていないように見えますが､ スイープとの衝突を探すように動作コンポーネントを強制しているため､
‫プッシャーに対してスムーズに反応するようになります｡
‫では､ 再生ボタンを押して､ プッシャーの行く手に立ちはだかりましょう｡
‫そして､ このように､ 私たちはとてもスムーズに邪魔をすることができるのです｡
‫そこで､ このプッシャーとムービングプラットフォームの部品を使って､ 自分だけの障害物コースを作ってみることに挑戦してみたいと思います｡
‫そこで､ 試作品で作った障害物コースの例を紹介します｡
‫この島をプラットフォームとして使用し､ 縮小することができます｡
‫そして､ その間を縫うように､ プッシャーが前後左右に動いているんです｡
‫そして､ 回転台ですが､ これは後ほど紹介します｡
‫だから､ 心配しないでください｡
‫でも､ このプッシャーもあるし､ 動くプラットフォームもあるんだから､ やってみればいいんだよ｡
‫これを真似てみてもいいし､ もしクリエイティブな気分で何か違うことをやってみたいなら､
‫ぜひ自分だけの障害物コースを作ってみてください｡
‫そして､ もしあなたが何かユニークなものを作ったら､ それをディスカッションで共有して､ みんなで見て刺激を受けましょう｡
‫では､ ビデオを一時停止して､ やってみてください｡
‫なるほど｡
‫お帰りなさい｡
‫さて､ プッシャーが使えるようになったところで､ ちょっと面白いものを作ってみましょうか｡
‫そこで､ このプラットフォームを実際に回転させてみることにします｡
‫だから､ 私たちのセットアップにはもう少し長さが必要で､ それを引きずっていくつもりです｡
‫キャラクターはプラットフォームの端にいるわけですが､ この2つの動くプラットフォームを､
‫次々と配置していきます｡
‫そして､ そのうちの1つは､ Z軸に1000を追加して､ 反対方向に移動させるつもりです｡
‫ですから､ この2つのプラットフォームは､ どこか真ん中あたりで出会うはずです｡
‫そして､ 今立っている浮島を複製します｡
‫Alt キーを押しながらドラッグすると､ 同じプラットフォームがすぐに見えなくなるので､
‫回転させます｡
‫なぜなら､ 最終的に私が望むのは､ この上のプラットフォームの上に乗ったら､ 死なないように押し倒されることだからです｡
‫しかし､ そのせいで少し挫折してしまう｡
‫さて､ このプッシャーキューブを
‫実際に上のプラットフォームに引きずり込むだけです｡
‫何個か入れてみる｡
‫だから､ 当面は3つで十分だと思います｡ 1つを反対側にドラッグして､
‫その速度をこんな風に反転させます｡
‫つまり､ 9ではなく､ -900となり､ 逆方向へ進むことになるのです｡
‫試しに､ この動く台の上に乗ってみようか｡
‫そのおかげで､ ちょっとだけハシゴをかけることができた｡ あとは､ この人たちを抜くだけだ｡
‫また､ 面白いことに､ キャラクターを強制的に動かす方法について､ ちょっとしたバグがあることに気づきましたので､
‫すぐに説明します｡
‫でもね､ ちょっと難しいけど､ できるんですよ｡
‫それらを確実にクリアすることができました｡
‫今はまだあまりうまくできていませんが､ その気になればあのキューブも間違いなくクリアできるはずです｡
‫だから､ 次にやるべきことは､ その小さなバグを修正することです｡
‫ここで問題なのは､ 更新されたコンポーネントの移動を呼び出したときに､ キャラクタの回転とは異なる回転をここに設定していることです｡
‫つまり､ 常に前方を向くように配置されることになります｡
‫この問題を解決する簡単な方法は､ 右クリックしてアクターの回転を取得し､ アクターの回転を新しい回転に渡すだけで､ 4つのMove Updated
‫Componentができます｡
‫しかし､ 本当に重要なのは､ 最後の1つに対してそれを行うことです｡
‫ですから､ 今すぐプレイして､ 私たちが実際に適切にキャラクターを回転できることを確認することができるはずです｡
‫いやー､ 素晴らしい内容ですね｡
‫このレクチャーでは､ キャラクターの衝突に関するちょっとしたバグを修正し､ ちょっとした障害物のあるアサルトコースを用意しました｡
‫楽しんでいただけたでしょうか？また､ 次の講義でお会いしましょう｡