101115


トップ絵の更新をしようと思ったんですけど 力尽きました。
ARとパチンコの案件を終わらせて休みが取れると思ったんですけど 来週から箱のゲーム背景をつくることになってるらしいです とりあえず寝かせて。。

最近聞いた話でこのようなサイト↓が出来て ゲーム会社の中の人達の間でちょっと問題になっているらしいです。

http://www13.atwiki.jp/game_staff/

各ゲーム会社のゲームクリエータがどのゲームを製作したかの詳細 といってもスタッフロールや噂からの類推らしいですけど
が まとめられています。
離職率の激しいゲーム業界では一部署のにつとめた人間は数年間で数百人規模になるので部署ごとに十数人程度記載されたところで全容というわけにはいかないと思いますが、のちのち内容が充実してきたらある程度使えるデータになるかもしれません。

ただし人事などに見られるとちょっと厄介かも というのもクリエイタ個人がなにを製作したかというのは
各部署レベルでしか把握していないため だれもがひっそりと開発を続けられたわけですが
こういうデータがまとめられたことで今後個々の開発者を測るモノサシに使われる可能性があるということです。

在籍中ヒットに絡んだ人はいいのですが、代表作がマイナー作品で占められているような人も稀にいますので
というかヒットなんてそう出るものではないので、そういう人がほとんどですけど そうした人が人員整理の対象になるんではないかという危惧があります。業界内で転職する場合にもこれを参考にされるといろいろと不味そうです。

隠れたヒットメーカーを見つけ出すとか
知り合いの誰がどこに就職しているなんていう追跡にはいいのですけどね

ちなみに私の名前はなかったですよw


mossa


進捗です もっさんの顔にフェイシャルアニメを仕込んでいる最中。 顔は面の起伏が激しいので割と細かくポリゴンで
割ります。トゥーンシェードを使用する場合 回りこみ部分をなめらかに見せるためにどうしてもポリゴン数が
ふえてしまいます 特に顔。アニメ風処理はテクスチャの質感で密度をあげられないのでなかなか難しい。
フェイシャルは筋肉を意識してポリゴンを貼るのが一般的ですけど 日本のアニメ顔の場合 可動領域がほぼ決まっていてだいたい細かく割ってあればそれほど破綻しないので特に悩まないです。
 



Unity_test



こんな感じのテストをしています。
パーティクル座標にトレイル(軌跡)のprefabを出力するだけのかんたんなスクリプトです。

レーザーやらミサイルやら ☆からキラキラパーティクルを噴射させようとかいろいろな用途が考えられます。
オブジェクトの座標データをパーティクルの座標データに置き換えるだけなので、途中から追跡のスクリプトに切り替えればホーミングミサイルになるでしょう。 ランダムにあるいは方向性を持たせて自由に飛行させたい時につかうとパーティクルエミッタの数値を変更するだけで対応できて便利です。

■ちょっと解説
パーティクルエミッタに下記のスクリプトを追加します

◇使用法
1.prefabにtrailRendererを仕込みます(もちろんパーティクルを仕込んでも良いです)
2.prefabをパーティクルエミッタに設置したスクリプトにアサイン。


trailSizeはエラーが出ない適当な数値が入っています(GetComponentでパーティクルエミッタから値を読んで
設定すれば半自動化されると思います)




private var i; としているのは外部function中でループの値を設定しなおすのが面倒だったため外に出しています。ふつうは for(var i=0; i
Start() でだいたいの数のトレイルに使用するプレファブを設定します。これはパーティクルエミッターから放出される初期のパーティクル数が不定のために全体のパーティクル放出数を超えない範囲でtrailSizeの数のぶんだけ
プレファブを作成しているものです。
trailObj[i].particleEmitter.enabled=false; を使用してエミッターをオフします(トレイルprefabにパーティクルエミッターが付いている場合)

トレイルプレファブの座標の更新はLateUpdate()文中で行われます。
LateUpdate()はUpdate()を実行したあとに更新されるファンクションです。通常はカメラがオブジェクトを追いかけるスクリプトのように Update()でオブジェクトの数値が更新をされ確定したあとに呼び出されます。

少し説明をしますね

Start()はスクリプトの開始時に一度だけ呼び出されるfunctionで変数の初期化などを行わせます。
Start()の前に一度呼び出されるfunctionがAwake()でStart()に使用する変数などを初期化でいいのかな?
このほかにFixedUpdate() 一定フレームごとに割り込みをかけるfunctionがあり これはForceなどを一定に与えつづけたりする場合に使用するようです。 
詳しくは↓を読んでください。
http://answers.unity3d.com/questions/2710/what-is-the-general-use-of-awake-start-update-fixedupdate-lateupdate

LateUpdate()中の説明・・・・・・・・・・・・・・・・・・・・
Distance=(particles[i].position - trailObj[i].transform.position).magnitude は
Vector3.magnitudeを使用してパーティクルの座標からトレイルプレファブまでの距離を計算しています。
if(Distance < 2.0){
距離が2.0以下ならばトレイルプレファブの座標をパーティクルの座標に移動しそれよりも大きな値ならば、
一度トレイルプレファブをDestroy()で破壊して移動しています。
これはパーティクルがパーティクルの寿命が終了すると座標は初期化されてしまうのですが、パーティクルにつけられたインデックスは使いまわされるために パーティクルの消失場所から初期化された座標にトレイルが描画されるのを
回避したものです(要するにパーティクルは寿命を終えるとスタート位置に戻るので軌跡が寿命を終えた場所からスタート位置まで描画されるのを回避するよということ)
Destroy()でいったんプレファブを破壊したのは、トレイルレンダラーにenabledのスイッチが付いていなかったためで 他に方法があるかもしれません。


■スクリプト


var prefab:GameObject;
var trailSize:int=200;

private var trailObj;
private var i;

function Start() {

  trailObj = new Array(trailSize);
for ( i = 0; i < trailSize; i++) {

var Obj=Instantiate(prefab,transform.position,transform.rotation);

trailObj [i]=Obj;
trailObj [i].particleEmitter.enabled=false;
}

}

function LateUpdate () {

var particles=particleEmitter.particles;
for (i = 0; i < particles.Length; i++){

trailObj [i].particleEmitter.enabled=true;

//var Direction = Vector3.Normalize( particles[i].position - trailObj[i].transform.position);//

var Distance=(particles[i].position - trailObj[i].transform.position).magnitude;

if(Distance < 2.0){

trailObj [i].transform.position=particles[i].position;

}else{

Destroy(trailObj [i]);
trailObj [i]=Instantiate(prefab,particles[i].position,transform.rotation);

}
}

}