つの衝突するオブジェクトは跳ね返りません。この値により、ジッタも減るため、低すぎる値を設定することはお勧めしません。Velocityデフォルトの直線速度で、これを下回ると、オブジェクトがスリープに入り始めます。Velocityデフォルトの角速度で、これを下回ると、オブジェクトがスリープに入り始めます。Velocityリジッドボディに対して許可されたデフォルトの最大角速度。Velocity」内に留まるよう固定されます。これにより、車輪などのオブジェクトでの意図的な高速回転を回避することができるので、「Rigidbody.maxAngularVelocity」を記述することで、リジッドボディに対してこの値を無効にすることができます。値が高いほど、オブジェクトの貫通度合いは増しますが、ジッターは減ります。Countジョイントおよび接点が解決される精度を定義します。値にすると、ほぼすべての状況にうまく機能します。Triggers有効にすると、トリガーと付けられたコライダと交差するレイキャストがヒットを返します。無効にすると、これらの交差はヒットを返しません。検出システムの動作を定義します。Settings:OSごとの、画面解像度などの基本設定。想定するプラットフォームではその設定をしておく。Settings:一般に、クオリティを上げると動きが悪くなる。Timestep:「1÷この値」の数、1秒間に物理特性の計算が行われる。FixedUpdate()の間隔でもある。上の名前を変えると、オブジェクトの名前を変えられる。デバッグモード:右上の「三」みたいなものをクリックすると、デバッグモードにすることができる。インスタンスIDなど普段見えない値が見られる。IDというのは、Unity内で各素材につけられる番号。Unity内で移動させても問題が起きないのはこのため。グラディエントエディタ:色を削除するときはCtrl+Delete。上部の矢印はアルファ値。スクリプト:インスペクターでスクリプトを追加するとき、そのスクリプトの中で、MonoBehaviour直下でpublic宣言した変数が下に出る。ここにアセットやヒエラルキーからオブジェクトを入れることで、その変数の内容を指定することができる。transformの問題:Scaleを行うとき、xyz値が違う場合は注意する((2,3,2)のような場合)。これはできるだけ避けるべきである。通常はメモリだけに負担がかかるが、この場合ではCPUにも負担がかかるようになるらしい。いくつかの物理演算では不具合が起きやすく、親子関係のある物体でも不具合が起きやすい。パーティクルはtransformの影響を受けない。Settingの調整でスケールの調整を行うのが望ましいらしい。xyzが同じ値でも、Scaleの変更は問題が生じやすい。いうか、Unity内でスケーリングするのはできるだけ避けたほうがいいらしい。モデリングの時点で調整するのが望ましい。親子付け:親子付けするとき、親の位置を0,0,0に置いた状態でやると問題が生じにくい。オイラー角とクオータニオン:インスペクターのRotaionの値は、オイラー角のローカル座標である。したがってここの数値をスクリプトで直接変更したい場合、transform.localEulerAnglesで調整する。rotationやRotateではクオータニオンなので、思い通りに動かないので注意。ローカルとワールド:親子付けした子オブジェクトは、インスペクターにはローカル座標が載っている。したがってここの数値を変更したい場合、localPositionの値を変更する。ただのpositionだとワールド座標の値を変更することになる。///////////////////スプライトアニメーション手順:アトラステクスチャ(2n乗のピクセルサイズの中にアニメするべき画像を分割して入れたファイル)を用意し、分割する。アニメの最初の画像をシーンにドラッグ。その画像を選択したままアニメーションビューを出し、AddCurve。やりたい種類のアニメーションを選択する。時間軸へプロジェクトから画像をドラッグして、アニメを作る。そのままだと最後の画像だけ一瞬だけしか表示されないので、最後の画像は同じ画像をもう一枚入れて表示させるとよい。CreateNewClipでほかのアニメーションも作っていく。///SpriteRendererSprite:スプライトアニメーション。静止画像を入れ替える、2Dのもの。//////////////////////////////////////メカニムアニメーション基本手順:3DCGソフトでアニメーションを読み込むか(Lightwaveのシーン読み込み)、Animationウインドウでアニメーションを作ると、「コントローラー」と「アニメーションカーブ」が自動で作成される。コントローラーは普通、自オブジェクト名が入っており、アニメーションカーブはアニメーションの名前が入る。通常はコントローラー=オブジェクト名であり、要するに一つのコントローラーが一つの一連のメカニム動作に相当。一つのコントローラーにいくつものアニメーションカーブが入り、トランジションが設定される。コントローラーを選択すると、アニメータウインドウにその一連の動きの表が表示される。アニメーションカーブは、要するに「ステート」で、ステートからパラメータがある条件に達すると、別のステートに遷移する。その遷移条件を決めるのがトランジション。メカニムの画面でパラメータを設定し、そのパラメータがある条件になるとトランジションを発生する。そのパラメータをプログラムから変更するにはアニメータクラスを取らなければならず、例えば「ブール変数aaがtrueになったらトランジションする」と設定した場合、アニメータクラスのインスタンスを取り、それにアニメータというコンポーネントを仕込まないといけない。("Animator");a.SetBool("aa",true);のように書く。デフォルトのステートを設定でき、何もしないとデフォルトのアニメーションをする。したがって何かアニメーションを作った時、例えばデフォルトで停止させたい場合は、停止専用のアニメーションを作ってそれをデフォルトにしておかないと、いきなり動きっぱなしになるので注意。AnyStateはアニメのすべての状態を示す。ここから矢印を出すと、あらゆる状態からそのアニメへ移行できる。AnyStateから右クリックで矢印を引く。矢印をクリックしてインスペクターでトランジションの長さなど変更できる。キー操作で動かすには、スクリプトが必要。///////////////LightwaveのUnity互換LightwaveのシーンをUnityへ持ってくる方法。シームレスにデータのやり取りができる。Packagesフォルダにコピーする。手順:Lightwaveシーンのコンテンツディレクトリを、標準コンテンツディレクトリの形にして(Sceneにシーンファイル、Objectsにオブジェクト、Imageに画像ファイルを入れたりする)、コンテンツディレクトリを互換させたい目的のシーンを含むフォルダに指定する。ファイルに日本語が含まれないように注意する。ファイル→パッケージシーンで簡単に標準ディレクトリ形式で保存できる。Unityで新しくプロジェクトを作る。Controller.unitypackageLightWaveAppLink.unitypackageの2つのパッケージをインポートする。そこでいったん保存してUnityを終了する。できたUnityフォルダのAssetsフォルダに、さっき作ったコンテンツディレクトリを丸ごと移動し、以降はここでシーン変更する。Unityを起動するとLightwaveのプログラムが入っているインストールフォルダを聞かれるので、そのフォルダを指定する。Files\NewTek\LightWave_11」の場所にある(要するにLightwaveのプログラムファイルのある場所のフォルダ)。するとシーンフォルダの中に、シーンファイル以外のファイルがたくさん出てくる。プロジェクトのシーンフォルダにある、Lightwaveのシーンファイルと同じ名前の立方体のようなファイルがある。それをシーン内にドラッグし、プロジェクトのそのインスペクターの一番上のScaleFactorを1程度し、Applyをクリック。すると大きくなって目視できるようになる。この状態でLightwaveでシーンファイルを開き、変更すると自動ですぐさまUnityにも変更が反映される。バンプなど)は、正しくUnityに転送できないことが多い。Lightwave上でUVテクスチャを作り、普通に物体を作る。その後Lightwave上ではテクスチャをすべてはずして転送し、Unity上で画像ファイルをUVに対応させる、という手順のほうがよさそうである。基本的にDeffuseのみでよい。これは色をつけるだけ。バンプもすべて含めて実質ベイクした状態として、テクスチャとして貼り付けておくとよい。Unityの制限:投影マッピングはUVしか使えない。1オブジェクトに使えるUVマップは最大2つまで。プロシージャル、クリップ、ノードは持ち込めない(複雑なノードを使用するときは、テクスチャにUVベイクするといい)アニメーション方法:純粋なボーンのキーフレームしかコピーできない。IKなどはキーフレームにベイクする。モーフや物理演算は不可能か。FBX互換:FBXファイルでもUnityにインポートできる。本来はこちらのほうが汎用的なファイル形式。アセットにインポートするだけでいい。/////////3Dモデルの設定(プロジェクトビュー)3Dモデルをインポートすると、以下のプロパティが調整できる。プロジェクトビューで3Dモデルを選択し、インスペクターのModel,selectで、Model,Rig,Animationsという項目がある。Factor:インポート時の拡大縮小が可能。Compression:高くするとファイルサイズが減るが、異常が生じる場合がある。可能なら、おかしくならない程度にできるだけ上げる。Colliders:自動でコライダーを作る。移動しない物体では使いべきではないらしい。SwapUVs:ライトマッピングがUVを間違えたときはこれで変更できる。Lightmap:これでライトマップのためのUV2を作成する。Normals:法線の計算。Importは普通に計算。Calculateはスムージングで法線を計算。Noneは法泉の計算をしない。ライトの影響がない物体には使える。Tangents:接線の計算。ファイルに法泉の計算方法が含まれているときのみ選択可能。Calculateはデフォルトで、普通に計算。Noneは計算しない。Angle:いわゆるスムージング角度。Tangents:メッシュ上の継ぎ目が問題でライトマップがおかしくなるとき、これを有効にするといいらしい。Materials:無効にするとマテリアルがオフになり、デフォルトのDiffuseが使用される。Namingオプションで定義された名前でUnityがマテリアルを検索する場所が、どこまで探すか。Type:人間ならHumanoidにしたほうがいい。汎用的なリグを使ったりできる。これを変更時、リグとの対応がなされ、上手くいくとconfigueの欄にチェックがつく。Genericはヒューマノイドではないものに使う。ヒューマノイドのいくつかの機能は使用できない。Legacyは以前のUnityで作った場合に有効なもの。インスペクターのConfigueで3DCGで作ったボーンとUnityで用意されたヒューマノイドのボーンを、相当するものに合わせる。これでUnityの持つヒューマノイドの機能を使える。アバター確認:人型のキャラクターは、通常の3DCGでもそうだが、まずT字のポーズをとっていないといけない。ないと不安定な動きになることがある。ヒューマノイド特有の機能を利用するため、アバターとインポートしたキャラクターのボーン構造が一致していないといけない。リターゲティング:あるキャラクターのアニメーションを、別のキャラクターのアニメーションに移すこと。キャラクターは、通常のヒューマノイドに設定していると、ヒエラルキーでは親のゲームオブジェクトがあり、キャラクターのルートボーンはその子オブジェクトになっている。その子オブジェクトと同じ階層に、移し先のキャラクターのルートボーンを入れ、元のキャラクターを無効化すれば、同じアニメーションで移せる。///AnimationsClips,Start,Endは、アニメーションのクリップ(モーションの一塊)で、これで一連のアニメーションとみなされる。+を押して分割できる。時間の設定は下のStart,Endを調整すればいい。Lightwaveの一つのシーンに必要なすべてのアニメーションを詰め込み、分割すれば作業が楽。match:アニメーションの最初と終わりがスムーズにループできるかどうかの自動チェックができる。緑だとスムーズで、赤だとうまくいっていない。LoopPoseを有効にすると、無理やり最初と終わりを滑らかにする。Mask:特定のボーンの場所を動かなくすることができる。Aniatorのアニメーションレイヤー機能を併用する。ComponentコンポーネントにAnimatorというのがあり、3Dモデルをインポートするとこれが自動で入っている。Renderersレンダラが非表示の場合ルートモーションのみがアニメーションされます。キャラクターが非表示の場合、体の他の部分はすべてスタティックとなります。Controller(アニメーターコントローラー)プロジェクトビューから作成。ステートマシンを制御する。ステートマシン:アニメのステート(状態)がそれぞれあり、それらを矢印で結ぶ(トランジション)がある。これで任意のアニメーションの作成と、その遷移を作成する。ステートを作るには、まず3DCGモデル読み込み時に作成したアニメーションクリップを必要な数だけ用意し、それらはプロジェクトビューにあるので、Animatorへドラッグすればよい。右クリックで空のステートを作り、Motionにそれを指定すればよい。AnyStateは「すべてのステート」を意味する。あらゆるステートから遷移できる矢印を書くことが可能。AnyStateへ入る矢印は作れない。デフォルトのステートは茶色で示される。変更する場合はステートで右クリックしてSetAsDefault。パラメータ:Animatorの左下にパラメータがある。これはすでに定義されているとみなされる。true);などして、パラメータを変化させられる。左下の状態や数値がデフォルト。Boolならチェックを入れるとオン(True)の状態がデフォルトになる。ジャンプすべきオブジェクトにスクリプトを適用し、その中に「スペースキーを押したらJumpブール変数をTrueにセットする」を書いておき、ジャンプするトランジションConditionsにJump,trueを入れておけば、スペースキーを押したときにジャンプするアニメーションが作れる。IKステートで足のIKを有効にするかTransitionsステートの遷移先ステート一覧Transition:Atomic:有効にすると中断できなくなる。Conditions:遷移のタイミング。左の変数が右の数値になるとtransitionが起こる。true」なら、Jumpという変数がtrueになるとこの遷移が起こる、ということ。変数はスクリプトで調整したりする(スペースキーを押したらJumpがtrueになる、など)変数はAnimatorの左下ので追加したりする。