Doc:JA/2.6/Manual/Game Engine/Logic/States

提供: wiki
< Doc:JA‎ | 2.6‎ | Manual‎ | Game Engine‎ | Logic
移動先: 案内検索

States

(ステート/状態)

BGE では、オブジェクトは複数の「ステート」を持つことができます。ゲームのプレイ中はいつでも、オブジェクトの現在のステートによって行動が決まります。例えば、ゲーム内のキャラクターが覚醒、睡眠、死亡の各ステートを持っているものとします。大きな音がしたときの彼の行動はいつも、現在の状態によって決まります。うずくまる(覚醒時)、目を覚ます(睡眠時)、何もしない(死亡時)といった具合です。

How States Operate

(ステートの操作方法)

ステートはコントローラーを通じて作成し、使用します。ステートのシステムに直接操作されるのはアクチュエータやセンサーではなく、コントローラーだけであることに注意してください。各オブジェクトは複数のステートを持つことができますが(上限は 30 で、デフォルトは 1です)、ある時点でのオブジェクトのステートは必ずひとつに決まります。コントローラーは常に、操作対象となるステートを定義しなければなりません。a) ロジックの条件を満たし、かつ b) オブジェクトが現在、指定したステートにある場合にだけ、出力パルスを送ります。ステートはオブジェクトのコントローラー設定で作成し、編集します(詳細は下記をご覧ください)。

Blender3D FreeTip.png
単純なゲームでは、ステート設定は自動で行われます。デフォルトで、各オブジェクトはひとつのステートを持ち、すべてのコントローラーがステート 1 を使うよう設定されます。したがってゲームに複数のステートが必要ないのなら、ステートをあえて設定しなくともすべて動作するでしょう - ステートについて頭を悩ます必要はまったくありません。
{{{2}}}


アクチュエータの一つである State アクチュエータは、オブジェクトのステートビット値を設定したり解除したりでき、センサーの信号に対するオブジェクトの反応を現在のステートによって決めることができます。上の例では、キャラクターには「大きな音」センサーにつながった「覚醒時」「睡眠時」「死亡時」ステート用のコントローラーがあります。これでキャラクターの現在のステートによって異なった動作を行わせることができ、この中にはある条件下でキャラクターのステートを切り替えるものがあるかもしれません。


Editing States

(ステートの編集)

State Panel Button
ステートは、Game Logic パネルのコントローラー(中央)列を使って作成し、編集します。ステートパネルを表示するには、ステートパネルボタンをクリックします。パネルには利用できるステートが30ずつ、二つにわけて表示されます。Visible ステートと Initial ステートです(下記参照)。ゲームのステートシステムを設定するには、オブジェクトのロジック内で、各コントローラーに妥当なステートを選びます。

オブジェクトのステートやその関連項目の表示はそのオブジェクトのステートパネルを使って行います。ボタンを使ってオンとオフを切り替えます。パネルはVisible および Initial のふたつの部分にわかれています。

State Panel Visible
Visible ステート

Visible 領域では、利用できる30のステートがそれぞれ、薄い灰色の四角形で表現されています。このパネルは、オブジェクトのロジックブリックで見えるロジックを示しています。右側にある All ボタンをクリックすると、オブジェクトの論理ブリックのすべてが表示され(もう一度クリックすると非表示)、ステートパネルの四角はすべて薄い灰色になります。もしくは、個々のステートをクリックしてそのロジックを目に見えるようにすることができます(複数の四角をクリックできる点に注意してください)。もう一度四角をクリックすればステートの選択を解除します。

使用中のステート(=そのステートで実行されるコントローラーがオブジェクトにある場合)にはドットがつき、Game Logic にコントローラーを表示すると、四角は濃い灰色になります。列見出し部分にあるステートボタンを使って、連結されたセンサーやアクチュエータの表示を切り替えられます。

State Panel Initial
Initial ステート

Initial 領域でも、利用できる30のステートが薄い灰色で表現されています。ゲームが実行されたとき、オブジェクトの開始時のステートとして、このうち一つをクリックできます。

右側には I (Information) ボタンがあります。クリックして Game メニューの「Show Debug Properties」メニューをクリックすると、ゲームの実行中、そのオブジェクトの現在のステートが画面左上隅に表示されます。