脳汁portal

アメリカ在住(だった)新米エンジニアがその日学んだIT知識を書き綴るブログ

Unity

Unityで3D空間をコントローラーで移動させて、障害物に衝突したらちゃんと止まるようにする

コントローラーを使ってキャラクターを移動させて、障害物にぶつかったら止まるという基本の動作をUnityで実装する方法 つかったもの Unity version unity 5.6.4f1 ユニティちゃん なんでもいいんだけど、以前から使ってみたかったユニティちゃんを利用 ダウ…

Unityでシーン遷移するとライトが暗くなる問題

UnityでSceneManager.LoadScene ("scene名")でシーンを移動すると、移動先のシーンのライトが暗くなる問題が発生した。 問題のシーンを遷移せずに初期画面として実行すると正常にライトが表示されるにも関わらず、他のシーンから移動すると暗くなってしまう…

Unityで前のシーンの情報を(無理やり)取得する

Unityは現在のシーン名は取得できるけど、一個前のシーン(つまりどのシーンから遷移してきたか)の取得がデフォルトでできない 色々試行錯誤していたのだけど、以下の方法に落ち着いた 1. データ格納用のクラスを作成 using UnityEngine; using System.Collec…

AVPro Videoで映像の再生ができなくなった時の調査したことまとめ

何もしてないのにこわれた!!()ということでOculus Rift向けの動画アプリをUnityで作っていたのですが、急に動かなくなりました。 具体的には音声は聞こえるものの、映像は白一色で何も見えません。 Unityのシミュレータだけではなく、以前ビルドしたアプ…

Unityのmetaファイルが持つguidを変更する

前提 Unityでは各ファイルに対してメタファイルが自動で生成される このmetaファイルの中でguidというパラメータが設定されている 他のオブジェクトとの相関性などは、ファイル名ではなくこのguidをもとにして行われている fileFormatVersion: 2 guid: 14f9h…

Android端末で初回起動時にStreamingAssetsからPersistentDataディレクトリにデータをコピーする方法

UnityでStreamingAssetsに配置したファイルはアプリコンパイル時にも圧縮されないため、必要な情報の保存に利用できる。 しかしこのStreamingAssetsはアプリ内にStreamingAssetsという名前のディレクトリが作成されるわけではなく、いわゆるシムリンク的なも…

PlayerPrefsとStreamingAssetsにおけるファイルの扱いの違い

Player Prefs StreamingAssets Windows Android Windows Android デバイス上で保存される場所 システムレジストリ ShaderPreferences コンパイルしたアプリのDataディレクトリ - ファイル内容の修正に関して regeditで編集可能 通常不可 テキストエディタで…

Unityのオブジェクトをスクリプトから回転する方法

方法 YourObject.transform.Rotate (x, y, z); YourObject.transform.rotation = Quaternion.Euler (x, y, z); 例 using UnityEngine; using System.Collections; public class Nouziru : MonoBehaviour { public GameObject cube; void Start(){ cube.trans…

UnityでOculus Rift用に作成した高解像度のmp4動画がカクつくことに関する検証

UnityでOculus Rift用に動画コンテンツを作る際に、解像度によっては結構な頻度でカクつきが発生します。 原因や解決方法など色々調べたので備忘録もかねて書いておきたいと思います Movie Texture UnityにはWindowsプラットフォーム用にMovie Textureという…

AVProVideoでOculus Rift用の360動画アプリを作成する

以前GearVR用の360動画アプリの作成方法を載せましたが、今回はOculus Rift用の開発方法を書きたいと思います portaltan.hatenablog.com 使用ツール AVProVideo GearVRではEasyMovieTextureを利用しましたが、RiftではAVProVideoを利用します。 AVProVideoは…

UnityのApplication.Quit()がWindows環境でフリーズしたりしなかったりする

Application.Quit()によるアプリのフリーズ Unityのversionを5.3.6p1にあげたところ、Application.quit()が動いたり動かなかったりするようになってしまいました 動かないときはアプリ自体がフリーズして最終的にはクラッシュしてしまいます調べてみると色々…

Unityをコマンドラインからオプションを指定して起動する

通常Unityは立方体のUnityのアイコンをクリックして立ち上げるが、コンソールから実行するとコマンドライン引数としてオプションを指定することができる Unity - マニュアル: コマンドライン引数Windows環境の場合はコマンドプロンプトで以下のように実行す…

AVProVideo/AVProWIndowsMedia/AVProQuickTime

AVProシリーズはプロダクトが色々あって当初結構混乱したのでまとめ AVPro QuickTime http://renderheads.com/product/av-pro-quicktime/ すでにUnity AssetStoreからは提供終了 以下に置き換えられている AVPro Video AVPRO Video(iOS) AVPro Windows Media…

Unityでmp4の4K動画を再生する方法(AVProWindowsMedia)

AVProWindowsMediaでmp4の4K動画を再生できるようにする方法です公式のドキュメントに方法があるので、それに沿って説明します。 http://downloads.renderheads.com/docs/UnityAVProWindowsMedia.pdf Super High Resolution 4K / 8K Playback ここをざっくり…

EasyMovieTextureで動画をポーズ/再開させる

前回のポストの続きになります portaltan.hatenablog.com前回は起動したら単純に一回だけ再生するというシンプルすぎるアプリでしたが、今回は自前のスクリプトを貼りつけて、ユーザの入力に応じてポーズなどの処理をできるようにしましょう 1. デフォルトの…

EasyMovieTextureでGearVR用の360動画アプリを作成する

Unityには標準でMovieTextureという動画を再生する機能がありますが、この機能はAndroidには対応していないので、GearVRでは利用できません。UnityでGearVRの360動画アプリを作成する方法はいくつかあるようですが、現在はEasyMovieTextureというassetを利用…

Oculus Rift DK2からCV1に変えたらUnityで認識しなくなった([VRDevice] Initialization of device oculus failed)

問題 Oculus Rift DK2で今まで開発をしていたのですが、そろそろCV1に変えようということで以下の公式サイトからインストーラをダウンロードしてセットアップは無事完了したのですが、UnityがCV1を認識してくれなくなりました。 Oculus Rift Setup | Oculus…

uGUIでテキストにアウトラインをつける方法

文字に枠をつける方法です 1. アウトライン項目の追加 アウトラインをつけたいテキストを選択した状態でツールバーから 「Component」 > 「UI」> 「Effects」 > 「Outline」を選択する 2. アウトラインの設定 インスペクターにアウトラインの項目が出てくる…

Unityのボタンのenabled/setActive/interactableの違い

UnityのuGUIを作成したときに、条件に応じてスクリプトから選択出来なくしたり、消したりしたい時が出てくると思いますが、その際に使う関数について 今回確認するのは Button.enabled = true/false; Button.interactable = true/false; GameObject.setActiv…

UnityでOculusなどのHMDの向いてる方向を取得する方法

HMDの向いている方向を取得する方法です Oculus Riftで確認しましたが、GearVRでも同じ処理で取得できるはずです 情報の取得 using UnityEngine; using System.Collections; using UnityEngine.VR; // enable to get HMD direction public class Direction :…

UnityでXboxコントローラの3Dスティックではなく十字キーで移動させる場合

Unityでボタンを複数作成するとデフォルトでXboxコントローラの左スティックで移動できるようになりますが、左スティックを無効にして十字キーで動かしたい場合の方法です。 手順 1. Inputマネージャーを開く Edit > Project Setting > Input 2. Input マネ…

Unityでボタンの表示を文字じゃなくて画像にする方法

まずは普通にUnityを起動してHierarchyから「UI > Button」を選択すると以下のような感じになると思います。 この文字ベースのボタンを画像ベースのボタンに変更します 1. RawImageオブジェクトの作成 RawImageオブジェクトが作成されると以下のように真っ白…

Unityでコントローラを利用したセレクト画面の作り方2(Submit取得の改良)

前回 前回のポストではクリック情報を取得するために、 1. ButtonFunction.csスクリプトを作成 using UnityEngine; using System.Collections; using UnityEngine.SceneManagement; public class ButtonFunction : MonoBehaviour { public void StringArgFun…

Unityでコントローラを利用したセレクト画面の作り方

Unityでシーンやキャラクターの選択画面を作ろうと思ったのですが、タップやVRの場合の視線を利用する方法は比較的ドキュメントが多いのですが、コントローラ(Gamepad)を利用した時の方法を探すのに少し手間取ったので、メモ代わりに手順を残しておきたいと…

Thetaで撮影した360度動画をUnityを使ってOculus Riftで再生する

Thetaで撮影した360度動画をUnityで再生する方法です Unityで360度動画を再生するには、以下の3つのコンポーネントが必要になります ① 360度mp4動画(equireqtangular形式) ② 上記の 360度動画(①)を張り付けるTexture Material ③ 上記のTexture Material(②…

UnityでObjectのPivotを変更する

Unityでオブジェクトの中心というか重心というかPivotを変更する方法です これをするとなにがいいかというと、オブジェクトをRotationするときに通常だとオブジェクトの中心を起点にしてしか回転することができませんが、回転の起点を任意に変更することがで…

UnityでGearVRアプリを作成する際の初期設定

UnityでGearVRアプリを作成する際の初期設定の手順です はじめてAndoridアプリを作成するときのみ必要な作業 1. Library ダウンロード JDKのダウンロード Java SE - Downloads | Oracle Technology Network | Oracle Android Studioのダウンロード Download …

Unityで作成したGearVRのAndroidアプリを実機で検証するときの手順

1. DeviceIDの取得 cd ${Android_SDK_Directory} cd sdk/platform-tools adb devices List of devices attached ********* device 現在PCに接続中のAndoridデバイスのdeviceIDが表示されます *****にあたるところがdeviceIDです 2. DeviceIDをOculus側へ登録…

Unityの外部コントローラ入力の取得

Unityで外部コントローラの入力を取得する方法です ボタン入力 OVRInput.GetUp(OVRInput.Button.One) # Aボタン OVRInput.GetUp(OVRInput.Button.Two) # Xボタン OVRInput.GetUp(OVRInput.Button.Three) # Yボタン OVRInput.GetUp(OVRInput.Button.Four) # B…

UnityでAndroidアプリのBuild時に"Unable to convert classes into dex format. See the Console for details"が出た場合

Unityでandoridアプリをbuildする時に以下のようエラーが出てBuildが失敗することがあります。 Unable to convert classes into dex format. See the Console for details これだけでは原因はわかりませんが、コンソールの方により詳細なエラーメッセージが…