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

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

ローグライクゲームを作る(3)

f:id:yasu9780:20161107024047p:plain

モブ子を剣を用いた近接戦闘に変更。
剣のコライダーがtrigerするとまとめてゾンビを攻撃できるので、殺しまくるようになった。
射撃は-8、斬撃-30なので、射撃がアシストで、斬撃ががんがんゴールポストに叩き込むような戦術
ただし近接戦闘なのでゾンビからも攻撃を受けやすいので、HPがやばいことになっている。

hit&awayをAIにやらそうとすると、例えばゾンビは射撃で被弾すると1秒程度動けなくなるとして
その状態のゾンビを狙って接近して攻撃する(停止状態じゃないゾンビに近寄らない)
みたいな相手のステートを見て行動するような仕組みを作るといいと思う。
また、常に相手の背後に回り込むという戦術もありかも。


ゾンビ自体はRigidBodyでcollider。剣はkinematicでtriggerなので、ゾンビの子供にkinematicでtriggerなダミーオブジェクトを非表示で組み込んで、
それとの間にtriggerを見ている。
被害をゾンビ側で見るか、剣側で見るか、実装自体はいろんなやり方があると思う。
triggerヒットしたときに、斬撃アニメーション中かをチェックしている。これをやらないと、手に持っている剣に触れるだけでゾンビが死んでしまう。
厳密にはアニメーション再生中のどのへんなのかまでチェックすべきと思う。

void OnTriggerEnter(Collider other)
    {
        if (other.name == "Sword")
        {
            GameObject _parent = transform.root.gameObject;
            AnimatorStateInfo stateInfo = Main.blue[1].GetComponent<Animator>().GetCurrentAnimatorStateInfo(0);
            if (stateInfo.IsName("Sword"))
            {
                _parent.GetComponent<Enemy>().ApplyDamage(30, 1, other.transform);
            }
        }
    }