PropertyDrawer
インスペクタに独自のプロパティ属性を作れる機能を試してみた。
スクリプト単位で拡張するCustomEditorと、プロパティ単位で拡張するPropertyDrawerがあるらしい。
今回は下記のサイトのPropertyDrawerでやるやり方をやってみた。とくにアレンジはなくそのままです。。
Qiita | 自分だけのPropertyDrawerを作ろう!
もう少し詳しい内容はこちらのスライドにあります。
mesh.verticesの編集(もにょもにょした表現)
Unityでのイベントの処理
FlashではEventListenerという組み込みの機構があってとても便利に実装できる。Unityではどんな実装が考えられるか試してみた。
例えばステージをクリックすると自身のオブジェクトが回転し、60度以上回転すると自身を破棄するようなものをFlashで実装すると。
package { /** * import. */ import flash.display.MovieClip; import flash.events.MouseEvent; /** * イベントテスト。 */ public class EventTest extends MovieClip { /** * コンストラクタ。 */ public function EventTest():void { // イベント追加 this.stage.addEventListener(MouseEvent.CLICK, this.onClick); } /** * クリッイベント。 */ private function onClick(evt:MouseEvent):void { this.rotation += 10; if (this.rotation >= 60) { this.stage.removeEventListener(evt.type, arguments.callee); this.parent.removeChild(this); } } } }
こんな感じ。
Unityでも作ってみました。
>>サンプル
4つともクリックすると回転し、60度より大きく回転するとGameObjectが破棄され、イベントも消される。同じ動きだけど、4つとも違う実装。
Continue…
テクスチャに描画する
例えば血しぶきや足跡などをテクスチャの上に乗せるときにどのようにするのが一番いいんだろ??
テクスチャを書き換えてというのはやり方が分からなかったので今回はパッケージのProjectors => Blob Shadowを使ってみた。
Blob Shadowもそれほど軽くはないらしいので、量が多いとモバイルではこの方法は使えないかもしれない。シェーダーとかを書き換えるともう少し軽くなるのですかね(?)
衝突地点にBlob Shadowを置くだけという簡単な方法。テクスチャを用意すれば血しぶきや足跡にも使えそう。今回は元のテクスチャ(円形グラデーション)のものを変えて、青くハッキリした円形のものに変えてみた。テクスチャは読み込んだままではなく、Blob Shadowのテクスチャに合わせて設定を変えた。
なぜかWeb PlayerではBlob Shadowが描画されないので(なぜ…?)今回はgif画像のみ。
JavaScript => C#
Unityの開発をJavaScriptからC#へ移行しようと決断。
だいたいの機能はこちらのMasamitsu Ishikawaさんが公開されているSlideShareの資料を見れば網羅できそうな感じなのかしら。
座標変換:クォータニオン、オイラー角
回転による座標変換について改めて調べてみた。
ちょっと間違ったこともあるかもしれないけど…
まず、回転による座標変換には以下の3つがある。
・変換行列
・オイラー角
・クォータニオン
変換行列はアフィン変換と言われ、回転だけでなく拡縮や移動などの変換も表す4×4の行列。これについては今回は省略。
Continue…
Mecanimを試してみた
Apply Root Motion (Animator)
突然アニメーションが動くなったので調べたところ、Animatorでの設定にある「Apply Root Motion」が問題だった。
これはデフォルトでチェックが外れた状態だけど、スクリプト側で動きを付けたいときはONにする。そうするとルートの動き(一番親?)がアニメーションでは反映されなくなる。スクリプトで制御したいとき(位置移動など)に使うものみたい。
そのゲームオブジェクトにアタッチしているスクリプトにOnAnimatorMove()があると、この項目が自動的に右のように「Handled by Script」となる。いったんこの状態となり、OnAnimatorMove()を削除するとApply Root Motion:ONとなることがあるようでこれが原因だった模様。
BlenderからUnityへのアニメーションのインポート
BlenderからUnityへアニメーションを持っていくときに、Actionにしておくと自動的にUnityへも反映されるので便利。
だけど、Unityでアニメーションが読み込めないという状況が起こったので少し調べてみた。
まだ分かりきっていないので間違いがあるかも。。。
Continue…