ゼルク・ハーデスだ。
前回の記事ではrigidBody同士の当たり判定を考えていたのだが
実際には剣は敵を通り抜ける。
なのでコライダー同士のOnTriggerEnter判定にすることにした。
しかし、このままでは探索範囲用のトリガーと反応してしまう。
そのため、空のオブジェクトを敵の階層の子供に持たせSphereCollisionをつける。SeachAreaというスクリプトを作って、親のコンポーネントを取得。
親のコンポーネントを取得するには
private 敵のスクリプト名 enemy;
start(){
enemy = (敵のスクリプト名)transform.parent.GetComponent(typeof(敵のスクリプト名));
}
OnTriggerEnterでプレイヤーが入ったら親のオブジェクトにアタッチされているスクリプトのフラグをオンにしてやればいける。
そして作ったオブジェクトのレイヤーを設定し、探索範囲用のトリガーとぶつからないように編集する。
作ったオブジェクトのInspecterの右上、レイヤーからAddしてやる。
武器にもレイヤーを追加しておこう。
UnityメニューのEdit->ProjectSetting->Physics
これで当たるか当たらないかの編集が可能になる。
先ほど追加した、武器と探索範囲用コリジョンのチェックを外してやれば当たり判定を行わなくなる。
コレで完璧だ。
当たり判定はうまくいくのだが、これだと攻撃モーションじゃなくても武器にあたってしまったらHPが減ってしまう。
またもやFlagの出番か。
そのあとは攻撃があたったら怯みさせなきゃならん。
その処理をつければいいか。
まだモデルとモーションができてないのでこれらは最後の方に実装になるか。
次にやるべきことは敵AIをもっと凝るか。
そして、敵が死んだらRagdollにするようにしよう。
Ragdollについてはこれから勉強していく。
わかりにくい説明かもしれないが、レイヤーは使う頻度が多くなりそうなので覚えておきます。
アリーヴェデルチ。
0 コメント:
コメントを投稿