2010年2月25日木曜日

【Unity】その26:チュートリアルⅡその7

 Ragdollを追加。物理計算で自然に敵が倒れる。すごい。

【Unity】その25:チュートリアルⅡその6

 *24日分*
 ロボット兵を追加。ウェイポイントとAIのスクリプトを追加したが、仕組みがわからない。ひとまず先進める。

2010年2月21日日曜日

【Unity】その24:チュートリアルⅡその5

 Physics.Linecast (start : Vector3, end : Vector3, layerMask : int = kDefaultRaycastLayers)
 2点間にcolliderが存在したらtrueを返す。

 Quaternion.LookRotation (forward : Vector3, upwards : Vector3 = Vector3.up)
 回転を指定。
 var relativePos = target.position - transform.position;
 var rotation = Quaternion.LookRotation(relativePos);

transform.rotation =
 Quaternion.Slerp (from.rotation, to.rotation, Time.time * speed);

 時間をかけて回転を指定。

2010年2月20日土曜日

【Unity】その23:チュートリアルⅡその4

 BroadcastMessageは該当のゲームオブジェクトかその子のみに有効。

【Unity】その22:チュートリアルⅡその3

 var script : ScriptName = gameObject.GetComponentInChildren(ScriptName);
 指定のコンポネントを持つ子のゲームオブジェクトを選択。

 LateUpdate function
 はUpdateファンクションの後に動作する。Upadateで起きたことに反応させたいときに使う。

 Physics.Raycast (EYE.transform.position, direction, hit, range)
 光線がcolliderに衝突したらtrue

 Raycast.rigidbody(/collider)
 光線がヒットしたrigidbody/colliderを返す。

 hitParticles.transform.rotation = Quaternion.FromToRotation(Vector3.up, hit.normal);
 Quaternionは回転を代表するのに使われる。

 taransform.TransformDirection

 

2010年2月18日木曜日

【東京急行】その4:都電荒川線

 巣鴨でアルバイトをしていたときから荒川線に乗ってみたいと思っていたので、今日は大塚駅より荒川線に乗車して三ノ輪を目指す。一両編成の電車で発射時にチンチンというのが愉快。

 途中都電の操車場で下車してあらかわ遊園に行く。あらかわ遊園というのは日本初の民間の遊園地だそうで大人でも入場料200円、園内には観覧車やら退役した都電の電車やらおかれていて動物も飼育されているという結構なボリュームだ。これが隅田川沿いの住宅街の中にある。しかし今日は午前は雪が降っていたということもあり、文字通り客が一人もいない。入場して一人で観覧車に乗ったりコースターに乗ったり—自転車をこいでレール上を走るのだ—寒くて互いに身を寄せあっている鹿や猿を見てまわる。ほとんど冗談である。従業員も手ぶさたの様子、他の客は私が帰るころに老人と女の子がやっと来たくらいだった。



 あらかわ遊園を出た後はひたすら川沿いを歩いた。びっしり建物で埋まっている閉塞的な空間が広がる都内において、唯一河川敷は周囲を広く見渡せる場所である。川沿いの高速を血管の中を巡る赤血球のように流れて行く車がよく見える。茂っているのは葦である。思い出したように木々が生えている。別段面白い風景でもない。美しい建物やきれいな川があるわけでもない。しかし私はこの手の風景が大好きだ。平凡で飾りっけのない風景は、それ故にそこに住む人達の鼓動を伝え、風景自体がおおいに呼吸し活動している。その中を歩く心地よさは風景との一体感である。



 上手い所で再び都電をつかまえて乗る気だったが、いつまで歩いても出会えず、そのうち腹が空いたので遅い昼を食べることにした。目をつけたのはすすけたレストランで、これが実に愉快だった。おおよそ街歩きの最高の報酬は地元民しか利用しないような年季のこもった喫茶店やレストランを見つけることである。この際味は二の次である。雰囲気が重要だ。店内は一昔前の色調でオールバックの男やしわを額に寄せた婦人が飯を食っている。これがいいのだ。カツを頼んだらコーラがついてきた。



 その後都電の終点の三ノ輪駅まで結局歩いた。三ノ輪周辺は下町の情緒を残しており、商店が身を寄せあっている。ここでなぜかLOを買ってしまって、この後東大に行くつもりだったが面倒くさくなって池袋で画材を買った後帰ってしまった。

2010年2月17日水曜日

【Unity】その21:チュートリアルⅡその2

 FPSチュートリアル続き。

 deltaTimeとはフレーム間の時間。

 functionUpdate()はフレーム毎に実行される。主にプレーヤーの行動やゲームのロジック実行するのに使われる。

 functionFixedUpdate()は主に物理的な振る舞いを実行するのに使われる。deltaTimeは常に同じ値。

 フレームの更新(deltaTime)は変動するのでフレーム依存のUpdateでは物理的な動作は不安定になる。そのためにFixedUpdateが用意されている。



 Javescriptの配列の他にUnity独自の配列も用意されている。

 var values : float[];

 for (var value in values) {
print(value);
}

 for構文でこういう表記があったのは知らなかった。Unity独自?

values = new float[10];

 独自の配列はリサイズが効かないので必要に応じて再宣言。


 Physics.OverlapSphere(位置、半径)で球体に触れているか内包されているcolliderを配列で返す。組み合わせるとこう: Collider[] = Physics.OverlapSphere( transform.position,
explosionRadius );


 function function(index : int){ index }

 とすると、function(3);などと呼び出せる。


 gameObject.BroadcastMessage ("ApplyDamage", 5);は全ての子の関数ApplyDamageを実行させる。

function ApplyDamage (damage) {
print (damage);
}


 Transform.DetachChildren();で親子関係破壊。