スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

OculusRift + Unity でゲーム作るときの覚え書き

自分が作ってて引っかかったところとかの覚え書き。

【メインのリンク】
OculusRiftの公式サイト → https://developer.oculusvr.com/
Unityの公式サイト → http://japan.unity3d.com/

【準備編】
・OculusRiftを使えるのはUnityのPro版のみ(2014年2月現在)
 OculusRiftを買うとPro版の4ヶ月トライアルの権利がついてくるが、トライアルで作ったアプリは公開しちゃダメ。

・UnityでOculusRiftを使用する手順
 1. OculusRiftの公式サイトから「Unity 4 Pro Integration」をダウンロード
 2. Unityを起動して、[Assets] → 右クリック → Import Package → Custom Package → ダウンロードしたパッケージから「OculusUnityIntegration.unitypackage」を選ぶ

【開発編】
・OculusRift用のカメラの設置方法
 カメラというよりキャラクターを配置する。 (キャラクターにカメラがついてくるので)
 Assets → OVR → Prefabs → 「OVRPlayerController」をHierarchyにドラッグする
 すると、子オブジェクトにカメラがついてくる。

・キャラクター(OVRPlayerController)をジャンプさせる方法
 OVRPlayerControllerオブジェクトの中にある「OVRPlayerController.cs」を編集する

 public float BackAndSideDampen = 0.5f; の下に
 public float JumpForce = 0.15f; を追加

 new public virtual void Start() の中で
 JumpForce = 0.15f; を追加
 ※ ここで値を設定しないと反映されないっぽい?

 bool moveBack = false; の下に
 bool moveJump = false; を追加

 if (Input.GetKey(KeyCode.RightArrow)) moveRight = true; の下に
 if (Input.GetKey(KeyCode.F)) moveJump = true; を追加
 
 if ( (moveForward && moveLeft) || (moveForward && moveRight) || の条件文の中に
 (moveForward && moveJump ) || (moveBack && moveJump) を追加

 if (!Controller.isGrounded)
  MoveScale = 0.0f;
 の文を無効化(コメント化でOK)

 if (moveRight)
   MoveThrottle += DirXform.TransformDirection(Vector3.right * moveInfluence) * BackAndSideDampen;

 の下に
 if (moveJump)
   MoveThrottle += DirXform.TransformDirection(Vector3.up * JumpForce) * BackAndSideDampen;

 を追加

 参考サイト: Cross Road さん


・シーン間で値を受け渡しする方法
 値を保持するためのオブジェクトを作る必要がある

 1. Hierarchyに空のオブジェクトを追加
 2. 追加したオブジェクトにスクリプト(仮: test.cs)を追加
 3. スクリプトを下記のように編集
  #pragma strict
  static var hogehoge; // 保持したい値の宣言
  function Awake () {
    DontDestroyOnLoad (this); // 別シーンに移動してもオブジェクトを保持する
  }

 4. test.hogehoge で値が参照可能になる


・衝突判定あれこれ
 いくつか種類がある。
 OnCollisionEnter - 一番メジャーな方法の模様。 衝突する側のみでしか実行されない?
 OnTriggerEnter - 主にオブジェクトがすり抜け可能な場合に使用? 赤外線センサー的な使い方
 OnControllerColliderHit - OculusRiftを使用する場合はこれを使う模様。

・外部データ(3Dモデル)のインポート時における注意点
床をすり抜ける 
→ colliderが設定されていないのが原因。 colliderは衝突判定をしてくれる。
  床を選択して、[Add Component] -> [Physics]で適切なcolliderを追加すればOK
インポートしたはずのモデルが表示されない
→ 位置を変えても表示されなければ、サイズを大きくしてみると表示される場合がある
テクスチャーが表示されない
→ 新規のフォルダを作り、先にテクスチャーデータのみを読み込んでから、モデルデータを読み込む
  それでも、うまくいかない場合もある

・terrainのサイズ変更
 Hierarchyから設置したterrainを選択 → Inspector内の歯車アイコンを押すと設定メニューが出てくる


*******************************************
UnityでMikuMikuDanceのモデルを表示する方法
 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
*******************************************

二次元キャラの世界へ行く方法!
これができると色々と面白いことが実現できる!(笑)

そもそも、MikuMikuDanceとは → ここ見て

UnityにMMDを取り込む手順は下記の通り。

1.「mmd-for-unity」をダウンロードする → MMDをUnityで出力するために頑張ってる人達がいます→UnityでMMDを動かす会

2.「mmd-for-unity」をUnityにインポートする。
  ダウンロードした「mmd-for-unity」を、フォルダごとUnityのAssetsにインポート。
  フォルダごと、Assetsにドラッグ&ドロップでインポートできます。

  これで、MMD形式のファイルをUnityに取り込めるようになります。
  Unityの画面上部に「MMD for Unity」のメニューが追加されたら成功。

3.取り込みたい二次元美少女キャラのファイルをダウンロード → 二次元美少女キャラの3Dモデルデータを探すならここ → 落として使い倒せ!3DCGモデル & MikuMikuDanceフリー素材 お好きなデータをどうぞ(笑)
 感謝とリスペクトをお忘れなく!

4.ダウンロードしたMMDファイルを、フォルダごとAssetsにインポート。
 (フォルダごとインポートしないと画像データとか正常に読み込めません)

5.Unity画面上部の「MMD for Unity」から「PMD Loder」を選択。
 PMDまたはPMXのファイルを読み込めます。
 ちなみに、PMXはPMDを拡張したファイル・・・と思ってください。


6.PMDファイルを読み込むと、読み込んだPMDファイルと同じフォルダにPrefabファイルが生成されます。(←重要)

7.次に、Unity画面上部の「MMD for Unity」から「VMD Loder」を選択。
 VMDは、3Dモデルのポーズみたいなものです。
 しゃがんだりジャンプさせたりするデータです。
 非常に重要なところなので、分からなければググってください。

8.「VMD Loder」の「PMD Prefab」に6で生成されたPrefabファイルを指定します。(重要)

9.「VMD Loder」の「VMD File」に
10.
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

Naoki

Author:Naoki
31歳。某ネットショップの運営やってます。

ツイッターはこっち。
http://twitter.com/#!/NaokiGeneralist

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。