Hatena::ブログ(Diary)

asus4 on G RSSフィード

2012-01-23

[JS] jsで良い感じのCSSアニメーションライブラリ

豊富なCSSアニメーションができる

http://ricostacruz.com/jquery.transit/


こちらは、CSSアニメがサポートされていれば、CSSアニメで、

ieなどサポートされていなければ、jQueryアニメーションにする

http://cortys.de/cssAnimate/


ということで、同時に使える環境を考えたときに、cssAnimateの方にやや歩があるかと。

ただ表現力としては、jquery.transitのほうが上手。

どちらもfallbackはできました。

2011-08-01

Unity3Dで内部クラスをパラメーターにする方法

FB Unity助けあい所で教わったので、すかさずメモメモ。


JSでは、内部クラスをパラメーターにすると、Unityインスペクタで、値を入れられるのですが、

C#で書いた時は、できないなー。と思っていたら。

[System.Serializable]

というアトリビュートをつけるといけるようですね。


class Inner {
	var a:int;
	var b:String;
}
var inner:Inner;

using UnityEngine;
using System.Collections;

public class CsInnerTest : MonoBehaviour {
	[System.Serializable]
	public class Inner {
		public int a;
		public string b;
	}
	
	public Inner inner;
}

これで、

f:id:asus4:20110801220708p:image

こんな感じで、パラメーターをグループ化出来るので、便利ですね。

2011-07-27

Unity ver3.4.0f5 での変更点まとめ


といっても、多いので、詳細はこちら。

http://unity3d.com/unity/whats-new/unity-3.4

随時追加していきます。


気になった部分をピックアップ

エディター編

  • GameObjectをProjectフォルダにドラッグすると自動でプレハブが作られるようになった!地味に便利。
  • ライダーの形をシフト押しながら押すと変えられる
  • Menu -> Edit -> Project Settingの項目で、スクリプトの実行順がカスタマイズできるように!
  • Inspectorのこの部分↓を押すと、Scene Viewに、タグ付けができる。素敵!

f:id:asus4:20110729123244p:image

  • 新規で、C#スクリプトを作ったときに、自動的にクラス名を入れてくれる。


言語編


モバイルでは、型判定が厳格に。

Unity JSでは、動的モードと、静的モードが選べるらしく、

#pragma strict

を入れると、静的型判定モードになります。

その際、こんな感じに、Arrayなどの返り値を直接入れると、怒られるようになりました。

Object型もちゃんとキャストが必要

var n:Vector3 = arr[i];

関数内の変数スコープ範囲が変わった

今までは、AS3と同じように、

function someMethod() {
     for(var i:int=0; i<10; i++) {
          //
     }
     
     // ここはスコープが残る
     for(i=0; i<10; i++) {
          //
     }
}

こんな感じだったのですが、


新バージョンでは、スコープ消えますね。

function someMethod() {
     for(var i:int=0; i<10; i++) {
          //
     }
     
     // スコープが消える。
     for(var i:int=0; i<10; i++) {
          //
     }
}




辞書型に、関数を入れられるようになった
var dict = new Dictionary();
dict["foo"] = function() print("foo");
dict["foo"](); // prints foo

2011-07-20

Unity JSでも、Genericクラスを使えるよ

#pragma strict

import System.Collections.Generic;

var list:List.<int> = new List.<int>();

for (var i:int = 0; i < 10; i++) {

list.Add(i);

}

って感じで。

速度はこっちのが速いので。さりげなくつかえるといいですね。





2011/07/21 追記

例えば、ジェネリッククラスが入れ子になってるやつを作る時は、


var dict:Dictionary.<String, List.<Vector3>>;


これだとエラーがでます。コンパイラが上手く認識してくれないみたい。

>>が、ビットのシフトになっちゃうみたいで、

> >とスペースを開けると上手くいきました。


var dict:Dictionary.<String, List.<Vector3> >;

2011-07-15

Flasherからみた、Unityアニメーションの特徴


良い点


悪い点

  • Flashでいうクラシックトゥイーンはない。モーショントゥイーンのみ。
  • コマアニメは、できるけど、苦手。
  • 複数階層をいじりにくい。(いちおういじれる)
  • モーションパスを使ったTweenは、iTween+iTweenPathを使う感じかも。

良くも悪くもないけど特徴

  • ローカル座標モードと、ワールド座標モードがある。

これで何が出来るのか

機能だけ見ても、何が出来るのかイメージ出来ないと思います。

俯瞰してみて、ゲームに特化した、アニメーション機能だという印象です。

具体的にどういったシーンで使えるのか、例を挙げてみようと思います。


アニメーションと、GameObjectが独立しているので、複数のキャラクターで同じアニメーションを使いまわせます。

"ArmL","ArmR"など、名前さえ同じなら、子階層まで再帰的に、同じアニメーション適用されます。

たとえば、DSドラクエ9のキャラクターアニメーションなんかをUnityで作れるということです。

いやー、Flashのときは、MCの中身を入れ替えてた。Unity簡単。


  • ユーザーの動作に合わせて、スムーズにアクションを変えられる。

クロスフェードは、歩いてる途中の動作から、スムーズに攻撃モーションに移れる。

ユーザーのアクションに応じて動きを変えるアクションゲームなどでは、

歩いている途中で、攻撃モーションにはいらなければいけないときなど多々あります。

Flashだと、諦めて、カクっと、次の

gotoAndPlay("Atack");

をするしか無かった。(やろうと思えば出来たけど)

Unityでは、

animation.CrossFade("Atack");

で、現在の位置から線形補間しながら、攻撃モーションに入ります。便利。