あーるPG - 社会人のデジタル生活

日曜プログラマになろうかなーと思った30代理系社会人の、キャリアアップや趣味(特にデジタル情報)の記録。らーめんとビールが好き。

Unity

マイクロソフトのARデバイス。Hololens

マイクロソフトのARデバイス。Hololensがマイクロソフトストアで売っています。 ちょっと高いですが、買ってアプリを作るなら今。

MMD4mecanimを使う(1)

MMDforUnityはなんだか調子が悪い上、デバッグも困難なので使用を断念しました。 というわけで、代わりに「MMD4mecanim」を使用します。 これはMMDのファイル(PMD, VMD)をfbx形式(Maya)にするツールです。 fbxはUnityでサポートされているので、fbxにして…

Unityの自作プラグインを作る(後編)

UnityのC#スクリプトからCのプラグインを呼び出すときの、型の合わせかたです。 標準型の値渡し 言語がサポートしている標準の型にも違いがあります。 参考:http://www.crystal-creation.com/software/technical-information/programming/language-comparis…

Unityの自作プラグインを作る(前編)

プラグインの概要 Unityでは動的にリンクするライブラリを作っておけば、スクリプト(C#など)から呼び出せます。 WindowsであればDLLにあたります。大まかな手順です。 VisualStudioなどで普通にDLLを作ります。 その作ったDLLを、x86向けであればプロジェ…

UnityでMMDを再生する

Unityで再生するモデル、モーションをWebから落としてくる方法を調べました。 (Unity Asset Storeでも良いですけど)「MikuMikuDance(MMD)」はフリーウェアのダンス作成ツールです。 ニコニコ界隈では流行っていて、モデルやダンスが配布されていることが多…

データ管理

Unity Asset Serverはブランチを切ったりできない。SVNなどを使った方が楽。 頑張る場合は以下のページを参照。 http://akisute.com/2012/12/unity-asset-server.html Unityで複数人がEditする場合(シーンをまたいでAssetを共有する場合)は、 Assetの変更…

マウス位置を取る

//2D位置. Vector3 vec = Input.mousePosition; //マウス位置が取れる.左下(0,0), 右上(width, hight). //3D位置. GameObject c; c = GameObject.FindWithTag("MainCamera"); //カメラを取得. vec.z = 5f; //clipされない範囲でカメラからの距離を指定. vec …

モーション再生

Unity上では簡単なアニメーションを付けることができる。キーフレーム形式で、曲線を描くことも可能。 ただ、普通にcube Objectを作ってモーションを適用すると、絶対位置で再生されることになってしまう。 相対的に再生する(任意のpositionでアニメーショ…

重力加速度を変更する

1. [Project Settings] - [Physics] から、gravityを指定。3軸で指定できる。 2. スクリプト内で指定。こっちのほうが調整しやすくて良さそう。 Physics.gravity = new Vector3(0f, -2f, 0f);

時間を扱う

60fps固定のゲームであれば、毎フレーム1足すと60カウントで1秒になる。 が、フレーム落ちしているとそうもいかない。Time.timeで起動からの時間が取れる。 Time.DeltaTimeでは、前のフレームからの時間を取得できる。

60fpsにする

大抵は既になっている。 [Project Settings] - [Quality] - [Vsync Count] = Every VBlank になっていると、画面の垂直同期に合わせて更新が行われ、大抵60fpsになる。フレームカウントの取得は float t = Time.frameCount; //アプリ開始を0とした現在のフレ…

Unity開発に関する50のTips ベストプラクティス(翻訳)

http://warapuri.tumblr.com/post/28972633000/unity-50-tips

VisualStudioでEdit

Edit - Preferenceで、Script Editorを選択できる。 でもVSではデバッグできないのであまり使えない。Assetで「UnityVS」なるツールが出ていて、これを使うとVSでデバッグできるらしい。ただ個人で99$、法人で249$。高い。

実行時の色を変える

Edit - Preferenceで、ColorのRunの色を変える。これ重要。transformやScriptのメンバに与える数値などは実行時に変更しても停止させると元に戻る。 Unityの良いところなのだが、うっかり忘れていると悲しいことになる。

別のシーンに切り替える

ゲームのモードごとにシーンを作ってロードする場合などに使用する。 Sceneファイルの名前の部分を引数にして Application.LoadLevel("MainScene"); とすると良い。ただし、同じプロジェクト内にあること、[Build Settings]の上部(Scene In Build)にScene…

衝突を取得する/接触を取得する

物理計算のため、RigidBodyコンポーネントを追加すると、コリジョン(衝突)を取得できる。 取得は基本的に OnCollisionEnter()で取得する。 void OnCollisionEnter(Collision col){ if (col.gameObject.tag == "Player"){ //処理 } } 剛体物理を適用したく…

オブジェクトを回転させるには。

フランクにインスペクタに載ってるrotation。これをいじるのはなんだか難しい。 positionもそうなのだが、直接x要素などに値を加算できない。Vector3で一気にいじる必要がある。 また、回転は基本的にクォータニオンで制御されているので、Y軸回転だけやろう…

買うUnity本間違えた

Unityをはじめようと思って「ゲームの作り方 Unityで覚える遊びのアルゴリズム」を読んだのですが・・・この本、Unityでのゲームの作り方を学ぶ本ではなく、ゲームのアルゴリズムや作り方をUnity環境で学ぶ本でした。間違えたーー!Unity4.x、C#なのは長所で…

インスペクタでいじる変数を共有するには

Unityの特徴的な要素の一つ、それはインスペクタで変数をいじれること。 ユーザーが定義した変数もいじることができる。 いじるには public class Choge : MonoBehaviour { public float m_atai = 1.0f; //←これ など、スクリプト上で、クラスのpublicメンバ…