2011年4月13日水曜日

Transformの親子関係

スクリプトから、Transformコンポーネントの親子付をする際の注意

毎フレーム、transform.parent = null とか transform.parent = hoge;
とかすると、コントローラの入力受け付けて移動してくれなくなった。
nullの時、nullじゃないときみたいにif文かませて親子付すると、親の移動しつつ
コントローラの入力で移動してくれるようになった。

2011年4月5日火曜日

ビューポートの変更

CameraオブジェクトのNormalizedViewportRectangle設定を変えると
そのカメラから見た画面の描画位置をずらすことができる。
セカンドカメラを作成してX:0.7 Y:0.05 W:0.2 H:0.2などに設定(0.0~1.0)するだけで
完成。
http://unity3d.com/support/documentation/Components/class-Camera.html


2011年4月4日月曜日

UnityExtension Detonator

Detonator:爆発を簡易に作成できる拡張機能
UnityExtensionの一つ。メニューバーWindow->AssetStore->Extensionからダウンロード&インポート

コンポーネントからDetonatorを追加して
Detonator dc = GetComponent("Detonator") as Detonator;
dc.Explode();
でぶつかったときに爆発するようにできた。

2011年3月26日土曜日

シーン遷移

スクリプト中でシーンを変えたいところにApplication.LoadLevel("シーン名");
ってするだけ。
メニューバーのFile->Build Settings (ctrl+shift+B)を開いて
Scenes in list にシーン追加しておかないと、エラーでます。
プロジェクトからシーンをドラッグアンドドロップすればいい。

2011年3月24日木曜日

動画再生(UnityProのみ)

動画ファイルインポートして、ゲームオブジェクト(Planeとか)に追加する。

スクリプトで
MovieTexture mov = (MovieTexture)renderer.materials.mainTexture;
mov.Play();
のように一度テクスチャをキャストしてあげれば無事再生できる。
オーディオクリップが別になってるので、プロジェクトペインから忘れず追加する。

2011年3月23日水曜日

3Dサウンド<->2Dサウンド

プロジェクトペインの対象ファイルを選択して、3DSoundのチェックを外してApply押すだけ
AudioListenerが無いと音が聞こえない。

右ジョイスティック設定

360の右ジョイスティックの値は、ProjectSettings->Inputインスペクタの
Axes->Sizeを増やして、適当な名前(Horizontal2とかVertical2)つけてあげる。
階層の他の項目はHorizontalを参考にする
Horizontal2->Axisの値を4th axis とVertical2->Axis 5th axisに設定すると
スクリプトからInput.GetAxis("Horizontal2")で値が取得できる。

2011年3月22日火曜日

コライダに関するメモ2

ChaacterControllerとColliderの衝突判定だと

CharacterController付きゲームオブジェクトのOnControllerColliderHit側だけしか判定できない?
CharacterController付きゲームオブジェクトAとBoxCollider付きゲームオブジェクトBで
BにOnCollisionEnterを書いても反応せず。

リファレンスを読んでみると、CharacterControllerについては記述見当たらない。
http://unity3d.com/support/documentation/ScriptReference/Collider.OnCollisionEnter.html?from=Collision

OnControllerColliderHit(ControllerColliderHit hit)内で
Aと衝突するオブジェクトBをタグ付けて、分岐させたのち
hit.collider.gameObject.GetComponent<T>().Hoge();
でBの衝突メソッドを呼び出して解決してみた。

コリジョンの状態

CharacterController.Moveの返り値CollisionFlagsで
CollidedAbove
CollidedSides
CollidedBelow
CollidedNone

if(collisionFlags & CollisionFlags.CollidedAbove)
if(collisionFlags == CollisionFlags.CollidedAbove)
で上、下、横のどこで衝突しているか判定できる

2011年3月21日月曜日

インスペクタにメンバのクラスを表示する方法

クラスの属性に
[System.Serializable]
public class XXX{
}
とつけるとインスペクタにクラス内クラスのメンバが表示された。

引用元
http://d.hatena.ne.jp/nyakagawan/20100523/1274626612

スクリプトリファレンス

本家スクリプトリファレンス英語
http://unity3d.com/support/documentation/ScriptReference/index.html

崇城大学の和訳。途中まで
http://www.cis.sojo-u.ac.jp/~izumi/Unity_Documentation_jp/Documentation/ScriptReference/index.html

C#の例が見たい場合は本家を見る。
和訳はjsだけっぽい。

ボタンの押下状態

Input.GetButton系の状態メモ
GetButtonDownが一回押した
GetButtonUpが離した
GetButton が押しっぱなし

っぽい

コライダに関するメモ1

コライダ-衝突判定をやってもらうには、ゲームオブジェクトに
動くオブジェクトAにリジッドボディorキャラクターコントローラとコライダを追加
動かないオブジェクトBにコライダを追加
する。OnCollisionEnter、Stay,Exitのイベントが呼び出される。

挙動はPhysXで動いてくれる。