またーりUnity3D 入門 (少しでも参考文献日本語化計画)
■unity3dのアニメーションについて
自身が勉強がてらに気まぐれにアップしていき、参考サイトも掲載していきます。
※注意書き
作成者は日曜なんちゃってプログラマーなので情報の真意は保障しません
●何ができるの?
視覚的に3Dゲームが作成できるようです。FLASHが3Dになった感じでしょうか
●何がすごいの?
MACでもWINDOWSでも製作でき、最終的なデータ書き出しの所にPSとかXBOXとかある(将来的に対応?なんでしょうか)
プラットフォームがマルチ。
■オリジナル3Dモデルを読み込むには?
FBXという形式に変換する必要があります。変換ソフトに関しては以下にあります。
FBXコンバーター(無料 3ds.obj.dxfをfbxに)
LIGHTWAVE用FBXコンバーター (無料)
unity3dは3DSTUDIOMAXを標準にしているようです
キャラクターにモーションをつけた情報もそのFBXに含まれるようですので、キャラクターを動かすことを前提とすれば
モデリング&アニメーション作成ソフトは3dstudiomaxかlightwaveか無料であればblenderあたりが選択肢になると思います・・・
■モーションについて
1キャラで複数のモーションを使う場合
Unity3d上で、1体のキャラで
複数のモーションを扱うには、
FBXファイルの命名規則を
「モデルネーム+@+アニメーションネーム」
に統一すれば良いらしい。
「player@wait.fbx」
「player@run.fbx」
「player@jump.fbx」
らしいです
モーションを作るごとにfbxで書き出すという作業が必要っぽいですね。
ということは3D作成ソフトで、
1.ボーンを入れて影響範囲の作成
2.歩くモーションを作る→「player@walk.fbx」で保存→攻撃モーションを作る→「player@attack.fbx」で保存のような作業が必要っぽいですね
■対応フォーマット一覧 詳しくは対応フォーマット一覧で
3Dモデルとアニメーションとか
Maya .mb & .ma1
3D Studio Max .max1
Cheetah 3D .jas1
Cinema 4D .c4d1 2
Blender .blend1
Carrara1
Lightwave1
XSI 5.x1
SketchUp Pro1
Wings 3D1
3D Studio .3ds
Wavefront .obj
Drawing Interchange
Files .dxf
Autodesk FBX .fbx
2D画像
.psd,.tiff,JPEG, PNG, GIF, BMP, TGA, IFF, PICT
オブジェクトのインポートについて
オブジェクトの鏡面反射とかのパラメーターを0にしていると、インポートされたときに真っ黒の状態になっちゃうので注意が必要だ。
トゥーンアニメ的な効果を狙ってmetasequioaで無理やり自己発光を100%とかにしている場合は特に注意
赤丸のとこで明るさ変えられました
あとtoonっていう設定もあるのでそれにすればよさそうです
プログラミング
英語のスクリプトリファレンスはこちら
日本語訳のスクリプトリファレンス
■ 0章 オブジェクト(箱)の重力設定 youtube参考動画
Rigidbodyを使った簡単重力設定
■ 1章 オブジェクトの当たり判定(壁と地面) youtube参考動画
function OnCollisionEnter(){
Debug.Log("HIT!!");
}
■ 2章 キー入力の作成 youtube参考動画
スペースボタンを押したときにメッセージが出ます。
function Update(){
if(Input.GetButtonUp("Jump")){
Debug.Log("Hit The Space Bar!")
}
}
■ 3章 オブジェクトの複製(Prefab プレハブ は日本語で言う仮設住宅のようなものです) youtube参考動画
プレハブという空の枠を作り、その中にオブジェクトをドラッグすることで雛形ができます。
あとはその雛形を画面上にドラッグドロップするだけで複製が作れます。
■ 4章 オブジェクトの消滅 youtube参考動画
自オブジェクトの消滅(プログラム起動後すぐ) gameObjectは自分のことを指します
function Start () {
Destroy(gameObject);
}
対象オブジェクトCubeを3秒後に消滅
function Start () {
Destroy(gameObject.Find("Cube"),3);
}
■ 5章
オブジェクトの複製
Instantiateはオブジェクトを複製します。Instantiateは非常に早く動作します。
全ての付与されたスクリプトや階層も含みます。
参照は次のように保持されます。複製された階層の外にあるオブジェクトへの参照は変更されません。複製された階層中のオブジェクトは複製され、参照が更新されます。
var thePrefab : GameObject;
function Start () {
var instance : GameObject = Instantiate(thePrefab,transform.position,transform.rotation);
}
■ 6章 タイマーの生成 (時間がたったらゲームオーバー)
var myTimer : float = 5.0;
function Update () {
myTimer -= Time.deltaTime;
if(myTimer <= 0){
Debug.Log("GAME OVER");
}
}
■ 7章 オブジェクトの座標移動
オブジェクトをプログラムで動かします
function Update () {
transform.Translate(Vector3(0,0,1));
}
■ 8章 重力設定(rigidbody)にプログラムで力を加える Force
var power : float = 500.0;
function Start () {
rigidbody.AddForce(Vector3(0,0,power));
}
■ 9章 テクスチャ設定の仕方
●4章のプログラミング部分
■イベントハンドラ 参考
イベントが起こったときに呼ばれる関数(マウスが動いたとか)