ここでは、ゲームオブジェクトの制御を、
別のスクリプトを通じて操作する方法を学習します。
ゲームのスタートに合わせて移動をすることは確認できましたので、次は、特定の条件を満たすことによって、スタート地点のゲームオブジェクトが移動を行うという制御を追加します。
今回の条件には「キャラが初めてバルーンを生成したら」という条件を設定します。この条件を満たすことで初めて、スタート地点のゲームオブジェクトが動きだ巣ようにします。
スタート地点のゲームオブジェクトには、MoveObject スクリプトがアタッチされており、このスクリプトの持つ MoveSpeed 変数に 0 以上の値を設定することで
ゲームオブジェクトを移動させる処理が実行されます。
まずは最初に、この Ground_Start ゲームオブジェクトの MoveObject スクリプトをインスペクターで確認し、MoveSpeed の値を 0 に変更します。
こうすることにより、このゲームオブジェクトはゲームが実行されても移動を開始することはなくなりました。(ゲームを実行して確認しておきましょう)
この MoveSpeed の値がゲーム内において 0 以上の値に変更することが出来れば、このゲームオブジェクトはその時点から移動を開始することになります。
つまり、条件を考えた上での手順としてはこのような制御の流れになります。
1.Ground_Start ゲームオブジェクトの MoveObject スクリプトの MoveSpeed の値を 0 に変更しておく = ゲームスタート時点では移動しない状態になる
2.キャラが初めてバルーンを生成したら、Ground_Start ゲームオブジェクトの MoveObject スクリプトの MoveSpeed の値を 0 ではない値(0.005f)に変更する
3.MoveSpeed の値が 0 以上になったので、Ground_Start ゲームオブジェクトが移動するようになる
重要なのは【2】の手順です。ここで設定した条件を満たすことが引き金となって、MoveObject スクリプトの MoveSpeed の値が変更されます。
「キャラが初めてバルーンを生成したら」という条件ですが、ここでは PlayerController スクリプトを修正して、この条件を追加していきます。
考え方としては、キャラが初めてバルーンを生成した、という条件を判定するための変数が必要になります。
バルーンを生成した、あるいは生成していない、という2つの状態を判定することができればよいのですから、bool 型の変数を作成して、この状態を管理させます。
今回はバルーンを生成したら true、生成していなければ false という状態であるとします。この状態を元に if 文による制御文を作成し、状態に応じて分岐を作ることで制御を行います。
またこの制御を行うにあたり、MoveObject スクリプトをそのまま変更する方法ではなく、新しく作成する StartChecker スクリプトを挟んで処理を実行させます。
【2】の手順の内容は、次のような流れになります。
A.キャラがバルーンを生成すると、PlayerController スクリプトの処理により、「初めてバルーンを生成した」という判定が行われる
B.【A】の処理が行われると、新しく作成する StartChecker スクリプトの、MoveObject スクリプトの MoveSpeed 変数を変更するメソッドが呼び出されて処理を実行するようにする
C.【B】の処理が行われると、StartChecker スクリプトのメソッドが実行されて、この処理によって、Ground_Start ゲームオブジェクトの MoveObject スクリプトの MoveSpeed 変数が変更される
それでは StartChecker スクリプトを作成します。