Nanashi-softプログラマ専用Unityでゲーム開発


◇Unityでゲーム開発 -Mecanimを使ってキャラを動かしてみる(11-

スカートに脚がめり込むのをなんとかしたいと思いました

1つの方法として,パニエ調整する方法
つまり,スカートを脚が当たらないように予め広げておく方法です

例えば,くるみちゃんのスカートは,横方向に楕円形になっていました
実行しながら,Hierachy上のスカートのボーンを動かして,脚がハミ出ない角度を調べて,停止中にその角度に固定しました
KURUMI_ALL
|-KURUMI_Biped
  |-hips
   |-leftskirt_A1 ←ここがスカートの左前
   |~B1~E1
   |-leftskirt_F1 ←ここがスカートの左後ろ
   |~
   |-rightskirt_A1 ←ここがスカートの右前
   |~B1~E1
   |-rightskirt_F1 ←ここがスカートの右後ろ
これらの Rotation.Z値を動かして膨らませました

ただ,パニエが入っているわけがないフォルムのスカートだとおかしいです
例えば,幽香のスカートを予め膨らませておくと,変な感じになります

普通に 3D手法で考えるととても難しい話になって,私には理解ができません(*'-')
もっと簡単な方法で回避できないものかと考えたところ……
要するに脚が近づいてきたら Rotation.Z値を小さくすればいいんじゃね?
と思いました

やってみます

○自身に他のオブジェクトが近づいてきた事を検知する方法

物理エンジンに指定スフィア内に衝突するコライダがあるか調べるメソッドがあります
Physics.OverlapSphere(中心座標,半径);
Unity公式のスクリプトリファレンスにそのものズバリのサンプルがあり,そのまま流用できました
	void Update () {
		float radius=0.1f;
		Collider[] hitColliders = Physics.OverlapSphere(this.transform.position, radius);
		int i = 0;
		while(i < hitColliders.Length){
			if(hitColliders[i].name != "Plane"){	//地面は除く
				//オブジェクトが近づいてきた
			}
			i++;
		}
	}
なぜか,地面を検知してしまい。おかしな挙動になる事が多かったので,省くようにしました
汎用性を持たせる為に .nameでは無く .tagでするように設計した方がいいのかも知れませんね

あとはキャラの膝辺りにコライダを追加しておけば,それと衝突してスカートが捲れます
どこかで戻す処理を入れないと捲れたままになりますけれど('-'*)



TOPプログラマ専用Unityでゲーム開発