AIプログラムとかUnityゲーム開発について

探索や学習などを活用したAI系ゲームを作りたいと思います。

スコアとか勝利モーションとか追加

f:id:yasu9780:20150423104351p:plain

ゾンビをひと蹴りで10点、倒すと1000点
02のハイキックはHPに-50ダメージ
01のスピンキックはHPに-100ダメージ

ということで、HPゲージの上に獲得スコアを3DTextで表示
ゾンビのやられたモーションは、AssetStoreのFreeのBoxingAnimationのKnockoutを使用
https://www.assetstore.unity3d.com/en/#!/content/26693
モーションのrigがgenericになってる場合はhumanoidに変更してapplyしておけば
Humanoidのmecanimでそのまま使える(めちゃ便利で助かる)


倒した時は勝利モーションで、UnityChanのWinモーションを使用(キメの敬礼が可愛いw)

01さんの方が攻撃力があるので、スコア獲得でも有利なはず
あと、距離が10f以内の敵だけを索敵対象にして、敵がいないときはランダムウォークにしてみました。視界という奴ですね


スコア表示は、セーラー服さんのObjectにchildとして3DTextを追加して、
以下のコードで値を設定

childObject = gameObject.transform.FindChild("exp").gameObject;
childObject.GetComponent<TextMesh>().text = ""+exp;

攻撃に関しては、

if( targetObj.GetComponent<ZombieController> ().hp<=atk)
{
	exp+=1000;animator.SetBool ("Win", true);
	myTimer2 = 2f;
}else{
	exp+=10;
	animator.SetBool ("SpinKick", true);
	myTimer2 = 1.5f;
}
targetObj.GetComponent<ZombieController> ().DAMAGE (atk);

一蹴りでゾンビのHPが無くなるときはWinモーション遷移して、タイマーで2秒遷移停止
まだゾンビが元気のときは、キックモーション遷移して、1.5秒遷移停止
遷移停止しておけば、すぐ歩き出すことでモーションが中断しない

これってAnimationだとIsPlaying()なんかで再生中か判るようだけど、
Animatorは、

   AnimatorStateInfo stateInfo = anim.GetCurrentAnimatorStateInfo(0); //0はLayer番号
   stateInfo.nameHashにAnimatorの現在のステートのハッシュが入っている
   if( stateInfo.nameHash == runStateHash) { ... }
   //走っている状態の時といった条件が指定できる

といった感じで現在のstateは取れるようだけど、animationの再生状態は判らないんですよね
検索しまくったんですが、いまのところ不明