‫こんにちは､ ようこそ｡
‫この講義では､ if文について学びます｡ 基本的にC++は分岐文であり､
‫これを使ってプラットフォームを前後に送ります｡
‫潜入してみよう｡
‫だから､ 今のコメントには､ 行き過ぎた場合は何とかした方がいいという話が何カ所か出ているんです｡
‫もし､ どうすればいいのか｡
‫以前､ Blueprintでは､ ブランチ・ノードを使用する場合､ それを行いました｡
‫さて､ C++にも似たような考え方があり､ if文と呼ばれています｡
‫これは以前に例として挙げたブランチノードです｡ この変数には､ I'm hungryと書かれていますが､
‫これはブール値です｡ これを条件に入れて､ 真の実行ブランチまたは偽の実行ブランチを作成し､
‫コード関数を実行することができます｡
‫C++のBlueprintにあるものは､ テキストであることを除けば､ 非常によく似ています｡
‫つまり､ I'm Hungryというブーリアン変数があり､ それをifと言い､ 括弧で囲むだけでいいのです｡
‫そして､ 次の行でif文の後に中括弧を開き､ その中括弧の中でtrueになった場合に起こるべきことを実行します｡
‫だから､ お腹が空いたら､ 奥さんが見ていないところでジャンクフードを食べて､ 「よし､ これで条件付きで起こるべきことは終わりだ」と､
‫カーリーブレースを閉じればいいのです｡
‫さらに､ falseの分岐を付けたい場合､ falseに何かを接続したい場合は､
‫elseキーワードを付けて､ 2つ目の中括弧のセットを開始するオプションもあります｡
‫そして､ ここではテレビゲームを続けて､ 矯正器具を閉じることができるのです｡
‫ここで､ これらの中括弧の間に好きなだけ線を入れることができます｡
‫必ずしも一本の線だけとは限りません｡
‫ですから､ ここにたくさんのコードを追加しようと思えばできますし､ 一行で済ませることもできます｡
‫また､ ここにある変数は､ if文に差し込む変数である必要はないんだ｡
‫ブール値を返す式なら何でもよい｡
‫つまり､ ここでちょっとだけ関数を呼び出すということができるわけです｡
‫演算子を使って別の結果を得ることができる｡
‫だから､ 私たちにはいくつかの選択肢があります｡
‫しかし､ その前に､ このプラットフォームがどこまで進んでいいのか､ 引き返すべきかを設定する必要があります｡
‫そして､ そのためには､ Uのプロパティが必要です｡
‫現在､ どこでも見える距離として移動してもらっています｡
‫このすぐ上に新しいものを作成しましょう｡ エディタで設定できるようにしたいので､
‫どこでも編集可能なプロパティにして､ 同じカテゴリの移動プラットフォームを上から下に使ってみます｡
‫ここでは距離を表すのでfloat型にし､ デフォルト値を与えるために移動距離と呼ぶことにします｡
‫デフォルトで100単位を指定しますが､ もちろんそれをオーバーライドしてエディターで変更し､
‫C++ファイルでこれを利用することもできます｡
‫これから行う方法は､ すでに可変距離を移動させています｡
‫実は､ もうそれを観察できないようにしたいんです｡
‫そこで､ ヘッダーファイルから､ visible anywhereプロパティとdistance moved変数を削除することにします｡
‫それから､ C++に戻って､ 代わりにローカル変数として宣言する必要があるんだ｡
‫つまり､ distance moveの前にfloatを置くことで､ 基本的にtickの内部でローカル変数として宣言し､
‫使用するたびに完全に新しい変数であることを確認できます｡
‫だから今度は､ 行き過ぎた場合は逆転させる必要があるのです｡
‫そこで､ これを実現する方法として､ 過去に見たことのある小または等しい､ または大きい演算子をブループリントのノードとして使用することができるのです｡
‫しかし､ 今はプラスや掛け算と同じように演算子として使うことができます｡
‫そして､ その方法は､ よし､ 距離が動いたぞと言うことです｡
‫これは移動距離より大きいのでしょうか？
‫そこで､ この右のシェブロンを使って､ 大なり記号を使うことができます｡
‫そして､ ムーブディスタンスを入れて､ ムーブディスタンスと呼んでいるようですが､ ムーブディスタンスであるべきだと思います｡
‫だから､ うっかりDを1つ余計に入れてしまったんです｡
‫この式はブール値を返すので､ if文の中で実際に使用することができます｡
‫そこで､ ifスペースで括弧を開き､ この式を切り取って､ その括弧の中に貼り付けるということができます｡
‫つまり､ 移動距離が移動距離より大きい場合､ 本来は向きを逆にしたいということです｡
‫そのためにこのコメントをしているわけです｡
‫動きの方向を反転させ､ 逆回転させたい｡
‫プラットフォームベロシティを手に入れた
‫そこで､ プラットフォームの速度を自分自身の負に設定し､ 基本的に方向を反転させることにしましょう｡
‫つまり､ プラットフォーム・ベロシティは等しい｡
‫プラットフォーム速度が負になる｡
‫つまり､ 基本的に速度の矢印を反転させることになるわけです｡
‫この行の最後にセミコロンを付けて､ このif文が実際に意図したとおりに動くかどうか見てみましょう｡
‫エディタに移ってコンパイルを押してみましょう｡
‫これで無事に完了しましたので､ 再生ボタンを押して何が起こるか見てみましょう｡
‫だから､ 今のままでも結構いい感じで進んだり戻ったりするんじゃないかと期待しているんです｡
‫今､ 実際に起こっているのは､ スタート地点を少し過ぎたところです｡
‫その理由は
‫だから､ 見てもらったら､ そこがスタート地点になるんです｡
‫そして､ 再生ボタンを押して､ プレイヤーが立っているこの同じアングルから横を見ると､
‫それぞれの方向にスタート地点から同じ距離だけ進んでいるのがわかりますね｡
‫というのも､ ここで計算されているのは､ 移動した距離が､ 決して変わらないスタート地点からの距離だからです｡
‫その開始位置を更新することはないので､ マイナス方向に進んでいます｡
‫そして､ それを通り過ぎて､ 反対方向に移動したのと同じだけ移動します｡
‫だから､ 私のプラットフォームはそういうものではありません｡
‫そこで､ スタート地点の更新にチャレンジします｡
‫それをif文の中でやっていくのです｡
‫つまり､ 移動の終点に到達したときだけ､ 現在地に設定することになります｡
‫そうすれば､ 基本的に出発点を反対側にリセットして､ 反対方向に移動することができます｡
‫そこで､ 結果をテストして､ 期待通りに動くかどうかを確認します｡
‫ビデオを一時停止して､ 行ってみてください｡
‫なるほど｡
‫お帰りなさい｡
‫つまり､ ここでは速度を反転させた後に行っていますが､ 実際には後でも前でもどちらでも構いません｡
‫なぜなら､ これらはお互いに影響を及ぼさないからです｡
‫開始位置を現在位置と同じに設定します｡ つまり､ 次のフレームでは､ 開始位置と自分自身の間の距離がゼロになることが分かっているので､
‫実質的に移動距離はゼロになるのです｡
‫アンリアルに戻って､ コンパイルボタンを押しましょう｡
‫それが終わったら､ 再生ボタンを押して､ 今どうなっているのか見てみましょう｡
‫だから､ これが前後することを期待しているんです｡
‫これでよしとする｡
‫ほぼ同量のユニットが常にスタート地点に戻り､ それ以上戻らないのは素晴らしいことです｡
‫ちょうど私が望んでいたことです｡
‫この講義では､ if文とブール式の使い方を学び､ プラットフォームを往復させる方法を学びました｡
‫素晴らしい内容です｡
‫それでは､ 次回の講義でお会いしましょう｡