仮想空間VR:操作パネルとボタン#3

やっていきましょう 3回目です。

操作対象を設置する

  1. Standard Assets の中にパーティクルシステムとして放水ホースがあるのでシーンに適当に追加します。 Assets/Standard Assets/ParticleSystems/Prefabs/Hose.prefab
  2. InspectorからHoseを有効にします。(なぜか無効になっている)
  3. play on awakeはOFFにしておきます。
  4. Hose(script)とSimple Mouse Rotator(script)はOFFにしておきましょう。今回は使いません。
  5. Hoseの子要素にWaterShowerがあります。これが放水のON/OFFをつかさどっています。
  6. StarButtonのInspector>Button(Script)にOnclik()したときの動作を決める項目があります。プラスボタンを押して項目を増やし、WaterShawerを入れます。
  7. ParticleSystem.Playを選択します。これでボタンを押すとWaterShaweが実行されるようになりました。

こんどはStopボタンです。

違うのは、ParticleSystem.playでなくてParticleSystem.Stopにします。

まとめ

スタートボタンをマウスでクリックすると Button(script)のOn Click()関数が実行され、WaterShower(Script)を呼び出し、ParticleSystem.Play()関数が実行され、放水される。という流れになります。

次回

視線を向けた先のボタンがハイライトするようにスクリプトを書いていきます。

圧倒的かずまなぶ(‘ω’)ノ

仮想空間VR:操作パネルとボタン #2

圧倒的かずまなぶです。(; ・`д・´)

2回目やっていきましょう。

ボタンのあるダッシュボードを作成

DefaultCanvasプレハブをシーンに追加して、名前をDashboardにします。

Dashboardの子要素にUI>Row Imageを作り、これにダッシュボード的なテクスチャを張りましょう。(Image と RawImage は何が違うのか)

DashboardのInspectorを いじって、イイ感じの位置にしましょう。水平目線よりも、下において、コッチに向けるように回転させるとイイ感じになります。

  1. Pos : 0,0,0
  2. width , hight : 140 , 105
  3. scale :  4.5 , 4.5 ,4.5

Start ボタン と Stopボタンを配置する

  1. UI>ButtonをDashboardの子要素に追加する
  2. 名前をStartButtonに変更する。
  3. Posをイイ感じの場所にする。
  4. width,hight : 60,60
  5. Scale : 1
  6. Image(script)のSourceImageにButtonAcceleratorUpSpriteというStandard Assetsのスプライトを入れる。(スプライトとは)

次はStopボタンです。

スプライトだけ違うものを入れます。ButtonAcceleratorOverSprite.png

スイッチングの対応

目線のRayがダッシュボードのどこを見ているかわかるように。衝突検知用の見えない壁をつけておきます。あとで、目で爆発させるのと同様に、目でスイッチングできるようにスクリプトを書いていきます。

Dashboardの子要素にplaneを追加して、そのMesh RendererをOFFにして透明にします。Mesh ColliderはONにして衝突だけ検知できるようにします。

次回は操作対象のオブジェクトを作成します。

圧倒的かずまなぶ(‘ω’)ノ

仮想空間VR:操作パネルとボタン#1

圧倒的かずまなぶです。(; ・`д・´)

操作パネルとボタンを作っていきます。ダッシュボードと呼ばれています。

少々複雑で頭が混乱してきたので、整理します。

こんな感じの操作パネル。 スタートとストップのボタン

やること

  1. UIのCanvasプレハブを作る。
  2. ボタン付きのダッシュボードを作る。
  3. 操作対象物をシーンに追加して、ボタンと接続する。
  4. ボタンを有効にするスクリプトを書く
  5. ボタンを見ているときにハイライトするスクリプトを書く
  6. ボタンがハイライトしているときだけボタンが有効になるスクリプトを書く
  7. 標準カーソルのスクリプトを流用して、ダッシュボードを見ている時だけボタンを有効にする。

DefaltCanvasプレハブを作る

UI>Canvas を作って DefaultCanvasというプレハブを作っておきます。後でいろんなUIを作るときの素材にします。

3D空間では単位がmでしたが、Canvasは別の座標系を持っているので、数値が良くわからないです。

  1. Camvasの名前をDefaultCanvasに変えます。
  2. Inspectorの設定はPos X,Y,Z =(0,0,0) で3D空間の原点。
  3. Width,Height=(640,480) にしておきます。縦横比0.75が良いようです。
  4. Scaleは(0.0135,0.0135,0.0135)にします。こうすると、3D空間(world空間という)上での1ピクセルに相当するようです。
  5. Render ModeをWorld Spaceにします。これは解りません。

 次は、Canvasの子要素ImageとTextのサイズ調整です。

  1. DefaultCanvasの子要素にImageとTextがデフォルトでくっついていいますので、Imageを選んでInspectorのAnchorをStretchにして、サイズいっぱいに引き伸ばしておきます。(まだ絵がないから何も見えませんが・・・)
  2. TextはText(Script)になんか書いて、Characterのサイズをいじって、Paragraphでセンターに寄せて、overflowにして色つけてやると、文字が書けます。
  3. DefaultCanvasに戻って、Canvas Scaler(Script)>Dynamic Pixels Per Unitを10に増やすとTextの解像度が上がり、見やすくなります。

この状態でプレハブにしましょう。

次回:ボタン付ダッシュボードを作る

次回はDefaultCanvasプレハブをシーンに追加していじっていきましょう。

圧倒的かずまなぶ(‘ω’)ノ

仮想空間VR:AIThirdPersonControllerをあれこれいじってみた

こんにちは (‘ω’)ノかずまなぶ です。

わたしのVR空間にだんだんと人が集まってきました。紹介します。

アイドルのおっかけ

  1. 先日紹介しました、アイドルのおっかけです。ユニティちゃんはロコモーションなのでPCのキーボードで自由に動けるのですが、それをずっと追っかけていきます。
  2. おっかけはAIThirdPersonControllerプレハブでAICharacterControlスクリプトのTargetをWalkTargetに設定しています。
  3. walkTargetはEmptyの名前を変えただけのオブジェクトです。追跡対象であるユニティちゃんの子オブジェクトにいれています。
  4. 言い換えれば、おっかけはユニティちゃんではなく、ユニティちゃんの保有するWalkTargetオブジェクトに反応しているのです。
  5. 星白しずかのエナがいつもカビザシを見つめているような感じです。ランカ・リーのVウィルスだったり、バサラのアニマスピリチアだったりもします。解らなかったらスルーしてください。

石盤のおっかけ

  1. アイドルのおっかけを改良して、追跡対象をユニティーちゃんから、地面を這う石盤に変更した「石盤のおっかけ」です。
  2. ユニティちゃんのときは追跡対象のユニティちゃんの中にTargetを入れていましたので、今回は石盤(cylinderオブジェクト)にTargetを入れていると普通は思いますが、違います。
  3. AIThirdPersonControllerプレハブのAICharacterContorolスクリプトのTargetをWalkTarget_lookMoveToオブジェクトにし、LookMoveToスクリプトを適用しています。
  4. LookMoveToスクリプトでは、カメラ目線の始点座標とベクトルを調べ、そのベクトルの延長上に何かしらのオブジェクトがあり、それが地面(変数ground)だったら、その座標にWalkTarget_lookMoveToオブジェクトを移動させるのです。変数GroundにはInspectorパネルからGroundPlaneを適用します
  5. そして、目線によって任意に動かすことができるようになったWalkTarget_lookMoveToオブジェクトに対してはcylinderオブジェクトという実体を与えて(子にして)、目で見ることができるようにしました。
  6. ゲームを実行してみると、目線の先に常に石盤がいるかと思います。

うろちょろゾンビ

  1. ランダムに出現する見えないターゲットに向かってひたすら歩き続けます。ターゲットは5秒間隔で移動します。
  2. AIThirdPersonControllerプレハブのAICharacter ControlのTargetにWalkTarget_Randomオブジェクトを適用する。
  3. WalkTarget_RandomオブジェクトはRandomPositionスクリプトを持ちます。
  4. RandomPositionスクリプトがWalkTarget_Randomオブジェクトの座標を移動させます。

バイツァーダストの被害者

  1. 目線を合わせると、赤いパーティクルが体を包み3秒後に爆死!します。
  2. 何回でもリスポーンしますので、タイミングよくバイツァーダスト!と叫びましょう。要練習です。
  3. AIThirdPersonControllerプレハブのThirdPersonCharacterスクリプトには何もいれません。こいつは特になにかの目標に向かって移動する知能は与えていません。爆死能力だけです。AudioSourceに爆発音だけ入れましたが、機能していません。(課題です)
  4. EmptyからGameControllerを作ります。killTargetスクリプトとAudioSource爆発音をコンポーネントとして追加しました。AIThirdPersonControllerプレハブの中にGameControllerを入れておきましょう。
  5. killTargetスクリプトにはTarget , Hit Effect , Kill Effect , Time To Select , Score、といったいろいろなものをセッティングできるようにしました。
  6. killTargetスクリプトでは、カメラ目線をレイとし、レイが変数targetに当たっていたら、当たっている座標にEffiectを出し、設定時間経過後にkillEffectを出し、そのあとに新しい座標にリスポーンします。
爆死!(; ・`д・´)

仮想空間VR:ユニティちゃんをジャンプさせる

こんにちは、(; ・`д・´)圧倒的かずまなぶ です。

ユニティちゃんがジャンプできないので、小一時間かけて解決した記録をUPしておきます。

走っているときにスペースキーを押すと、ジャンプするはずですが、ジャンプして、浮いた瞬間にスクリプトが止まってしまいます。Projectパネル横のConsoleパネルで確認できます。

UnityChanControlScriptWithRgidBody.csを開いて(エラーログをダブルクリックでもいけます。)

126行目

cameraObject.SendMessage(“setCameraPositionJumpView”); // ジャンプ中のカメラに変更

で引っかかっているので、//でコメントアウトします。

ジャンプ中にカメラが切り替わるようですが、そんなカメラ作った覚えはないですし。

それだけ。以上 圧倒的かずまなぶ でした。(; ・`д・´)

仮想空間VR:AIThirdPersonControllerとWalkTargetとNavigationのBakeをやってみる。

こんにちは (‘ω’)ノ 圧倒的かずまなぶ です。

きょうの作品は

”アイドルの追っかけ” です。

アイドルをasdwキーで操作すると、追っかけが付いてきます。どこまでもついてきます。崖から落っこちても、死を恐れずに追いかけてきます。たぶん。

追記:崖から追いかけては来ませんでした!おっかけには歩ける領域が定義されているからです。そこまでの根性はないようです( ゚Д゚)

ユニティちゃんだけが落っこちて おっかけは見えない壁にひっかかって足踏みしていますす。

やったこと

  1. カメラを適当に配置します。私はいつも、MainCameraをGvrEditorEmulatorと一緒にMeMyselfEye(EmptyなGameObject)の子に入れています。
  2. >アイドル役としてUnityちゃんを設置します。UnityChan>Prefabs>for Locotion>unitychanプレハブ です。ロコモーションの方です。
  3. おっかけ役として、Standard Assets>Characters>ThrdPersonCharacter>Prefabs>AIThirdPersonController.プレハブを設置します。
  4. おっかける対象として、WalkTarget(EmptyなGameObject)を設置します。
  5. このWalkTargetをInspectorからAIThirdPersonControllerのAI Character Control(Script)のTargetにドラッグアンドドロップします。
  6. そしてこの、WalkTargetをunitychanの子に入れます。
  7. 歩ける場所を定義します。メニューWindow>AI>Navigation>Bake>BakeでNavMeshを作成します。この青い領域が歩ける場所です。
はまりどころ : Navigationってどこにあるの?

以上です。スタートボタンを押して、走ってみましょう。

written by 圧倒的かずまなぶ

おまけ

VR:動かない・・・

かずまなぶです。

さっきまで、ethanが浮いていました。

地面(plate)のMesh Collider(衝突)のconvexのチェックを外すと、浮かなくなりました。見えない厚みの定義でしょうかね?1時間悩みました。

しかし、まだethanが動いてくれません。 Cキーでしゃがむことはできますが、asdwxキーが機能しません。

わかりません・・

タスケテ

仮想空間VR:BlenderでUV作成#2 Unityで使ってみる

こんにちは かずまなぶ(‘ω’) です

前回Blenderで作ったオブジェクトをUnityに取り込んでみましょう。

ボディを .blendファイルとして保存します。

テクスチャーを.pngファイルとして保存します。

Unity側ではAssetsフォルダの下のModelsフォルダ と Textureフォルダにそれぞれ入れましょう。フォルダがなければ作りましょう。

そして、Modelsフォルダに入れた.Blendファイルをシーンビューの中にドラッグ&ドロップしてオブジェクトを配置します。そのオブジェクトにTextureフォルダにいれた.pngファイルをドラッグ&ドロップします。

以上です。だんだんUnityに慣れてきましたね。ボキャブラリーが増えてきたおかげで、覚えが速くなってきました。

Mirage Solo:自分で作ったVR空間を自由に歩く!

こんにちは かずまなぶです。(‘ω’)ノ

遂に

自分で作ったVR空間を自由に歩く

という 一つの大きな目標を達成できましたので記録しておきます。

前回はスマホで3DOFだったので、この位置から動くことはできませんでした。

初めてのVR ファーウェイP9と安物ヘッドセット。 それでも感動モノ (*´ω`*)

こんどは Mirage Soloに同じデータをインストールして起動したシーンです

初期位置はこの状態です。当然360°見渡せますし。スマホの時よりも視野が広くて、解像度も段違い! 美しいのひとこと!

函館の輝きがさらに向上しています(*´ω`*)

では、回り込んでみましょう。

やりました!完全にもくろみ通り、背中が見えております!

これが

6DOF です (; ・`д・´)

これだけで、5万円の価値あります。

VR世界は広いですが、現実世界(家の中)では障害物だらけですので、すり足で恐る恐る行きましょう(; ・`д・´)

ではさらに移動してみましょう。

ずいぶん離れたところまで来ました。

完全に自由に動けます!

これが

スタンドアロンの力です!

もうアンビリカルケーブルは必要ありません(; ・`д・´)

函館の夜景にも接近してみましたが、眼前に広がる夜景に圧倒されます(*´ω`*)

この光景を見ながら我思います。

VRは広大だわ・・・・。

草薙素子少佐の気分です。

VRというものを知ってからここまで3週間。Unityをインストールしてからでは2週間でここまで来れました。

みんなもやろう VR!

ではまた逢う日まで。(‘ω’)かずまなぶ