ページ

2014年2月16日日曜日

Blender Game Engine 自動ドアを作る

Blender Game Engine を使ってゲームを作るにあたって、YouTubeに投稿されていた英語のチュートリアルを参考に
今回はキューブが近づくとドアが上に持ち上がって離れると閉まるモノを作りたいと思います。


1.下準備
Blender 2.6を使用します。(Game Engineが使えるBlenderならば何でもOK(だと思う))

Blender 2.6を使っているので、まずエンジンのモードをBlender レンダーからBlender Gameに変更します。

中央の立方体はそのままにして、平面(Plane) を追加する。
それをある程度の大きさに広げる。これがステージになる。

立方体をステージの上に乗るように置く。そして、X方向に少しずらす。この立方体はプレイヤーである。

もうひとつ立方体を中央に作る。これはドアになる。プレイヤーと同じくらいの高さにして、Y方向に伸ばす。

こんな感じになる。


2.ドアのロジック(Logic)を作る
画像を見ればわかる という人は以下の画像を参考にLogicを編集してください。


文章で説明していきます。
はじめに、ドアをクリックしてLogic Editorを表示します。

まず、センサー(Sensor)に オール(Always)と Near を加えます。
Near の「プ ロパティ」(Property)は 1と入力しておきます。Nearとは「近く」という意味。つまりプロパティ(Property) 1が近づくとこのセンサーがオンになるというわけです。このプロパティ(Property) 1というのは、プレイヤーの立方体のことで、後で立方体にプロパティを設定します。

次に、コントローラー(Controller)に And を2つ加えます。(Blender 2.6ではセンサーとアクチュエーターを直接ひもで結ぶと、
コントローラーに自動でAndが追加されます。)
そして、アクチュエーター(Actuator)に コンストレイント(Constraint)と Motion を2つずつ加えます。

オール(Always)、Nearそれぞれをそれぞれ And につなぎます。(上の写真参照)
それぞれのAnd から コンストレイント(Constraint) と Motion につなぎます。(上の写真参照)

コンストレイント(Constraint) の「制限」はそれぞれ Loc Z にします。
「最小」(Minimum)は 1.00、「最大」(Maximum)は 5.00にします。(訂正:「最大」 は3.00にするとドアがぽんぽんはねるのを抑えられます。)

このコンストレイントとは何かといいますと、ドアの移動に制限をかけるものです。Loc ZとはZ座標に制限をかけるということです。よって、後々調整が必要になるわけですが、ここではとりあえずこの値を入力しておきます。

次に、Motion を設定します。オール(Always)につながっている Motion の「Loc」 Zは -0.1にします。
そして、 Near につながっている Motion の「Loc」 Zは 0.3にします。

これでひとまずドアの Logic は設定が終わりました。この設定、いったい何をするかといいますと、

 
上の図のようなことをやります。
    1.オール(Always)につながっているMotionがドアを下方向に移動させる。
    2.オール(Always)につながっているコンストレイント(Constraint)がドアがZ 1.00より下に行くのを抑える。
    3.Nearがオンになると、それにつながっているMotionがオール(Always)のMotionよりも大きな力でドアを上方向に移動さ                せます。だから、NearにつながっているMotionのほうがLoc Zの値が大きいわけですね。
    4.Nearにつながっているコンストレイント(Constraint)がドアがZ 5.00(訂正により3.00)より上に行くのを抑える。
    5.Nearがオフになると、ドアを上方向に移動させる力がなくなり、ドアは下方向に移動して 1に戻る。
それでは、次にプレイヤーを操作できるようにしましょう。

3.プレイヤーのロジック(Logic)を作る
Logicを作る前にまずプレイヤーの立方体の物理演算をRigid Body(剛体)に変える必要があります。
やり方は簡単です。まず立方体をクリックして下の図のように物理演算プロパティを出します。


「Physics Type」を 固定 から Rigid Body に変えます。それだけです。Blender 2.4系などはこれとは違う画面なので、それぞれで立方体の物理演算タイプを Rigid Body 変更してください。

立方体を Rigid Body に変えたところで、本題のLogic作成にあたりましょう。
ドアと同じく完成図の画像を載せます。

文章で説明していきます。
まず、センサー(Sensor)に キーボード(Key Board) を2つ加えます。
キー ボード(Key Board) の 「Key」 は All Key ではない空白のボックスをクリックして方向キーの↑を押して空白が Up Allow に、同じようにもうひとつのキーボード(Key Board) の 「Key」 は方向キーの↓を押して空白が Down Allowになれば設定完了です。

次に、コントローラ(Controller)に And を2つ加えます。

そして、アクチュエーター(Actuator)に Motion を2つ加えます。

Key Board - And - Motion の順につなぎます。

「Key」 が Up Allow になっている方の Motion の 「Loc」 X は -0.1 に、 Down Allow の方の 「Loc」 X は0.1 に設定します。

ここでドアの Near センサで説明した、この立方体のプロパティ(Property)を設定します。
初 回起動時のの画面では上の図のようにはなっていませんので戸惑った方がいるかもしれませんが、Logic Editor の左側に本来あるプロパティ(Property)欄の Add Property をクリックして新しいプロパティを作成します。(上の図の下側のようなものができる)
 上の図の「プロパティ」で 1 と入力されているところは Add Property を押したときには Prop となっているところで、これがプロパティの名前です。Near で入力した 1 とは、ここの 1 、つまりプロパティの名前だったわけです。

3.微調整
ここでする微調整は必要不可欠なものですからすっ飛ばさないで下さい。

やることは立方体の物理演算の値の微調整です。そんなに難しくありません。
まず、先ほど立方体を Rigid Body に設定したときに使った画面を呼び出します。


青いところを変更します。まず移動に対する抵抗を1.0000(最大値)にします。そして、変換・回転をロックにすべてチェックを入れて、バウンドボックスにチェックを入れます。(バウンドボックスにチェックを入れる必要性は今のところわからない)

微調整完了

4.試してみる
上のバーの ゲーム(Game)をクリックして ゲームエンジンの開始(Start Game)をクリックするか、Pキーを押してゲームエンジンが起動する。
↑キーを押すと立方体が動いて、直方体(ドア)に近づくとそれが上に持ち上がり、離れるとまた下に落ちる。

5.最後に
うまくいかなかった場合はコンストレイントの調整など最初から見直してみると、思わぬミスを発見できるかもしれない。
またこの文章が少しばかり誤っている可能性もあるので、参考にしたYouTubeの動画のアドレスを載せてこの記事を締めくくらせていただきます。

0 件のコメント:

コメントを投稿