Pages

2013年6月7日金曜日

敵AI(クズ)

諸君、ご機嫌いかがだろうか?

ゼルク・ハーデスだ。



前回の記事でダークソウルのような移動を書いたがあれだとスティックの倒し具合でスピードの変化を付けられない事が判明した。

transform.fowardにスピードをかけているんだから当たり前つっちゃあ当たり前か。

ならばそこにスティックの傾きを掛けてやればいい。

とりあえず適当な変数に傾き具合を入れておく
float joyX = Input.GetAxis("JoyX");//X軸
float joyY = Input.GetAxis("JoyY");//Y軸
ジョイスティックは-1.0~1.0の数値が入る。(0は何もしていない状態)
コレをtransform.fowardにかけてやればいいんだが負数が入るとダメなので
if(joyX < 0.0f) joyX *= -1.0f;これをYにもする。
そして
if(Mathf.Max(joyX,joyY)  >= 1.0f) moveDirection = transform.foward * runSpeed;
else moveDirection = transform.foward * walkSpeed;
こうすれば全部倒しきっていたら走って少し倒してたら歩くという処理ができる。

これは2種類しか作ってないけど
float joy = Mathf.Max(joyX,joyY);ってやって
moveDirection = transform.foward * speed * joy;
とやれば倒し具合によってスピードが変化するだろう。

私は歩く、走るがあればよかったので前者をとりいれた。


何度も言うが素人が考えたソースなのでもっといい方法があるかもしれない。

悩んでいる人がいればなにかきっかけになれば幸いだ。


そして敵AIのほうはスフィアコリジョンをつけてtriggerにチェックいれる。
コリジョンに入ってきたらプレイヤーの方向を向いて一定の距離まで来たら追いかけてくる
といった処理だ。
OnTriggerEnterでフラグを立てて
Updateで動かせば簡単にできる。

Vector3.Distance(ターゲットポジション、自分のポジション)で距離が求まる。

しかし、コレではそーっと後ろをとって致命の一撃!!なんてことができないので改良しなければ・・・


あとは地面に落ちないようにとか難しそうなことが残っているが後回しでいいだろう。


攻撃の処理がイマイチよくわかんないんだよね。武器にコリジョンをもたせるだけでいいのかな?

そしたら攻撃してないのに敵にダメージを与えれたり・・・
フラグか?

いろいろ難問を残している・・・


アイテムの入手の処理も終わったので次はUIかな。

連休なのでちょっと頑張りたい。




話がそれるがC++でのゲームづくりでキャラクターのマネージャーを作っているんだが
アイテムや武器、弾も一緒にいれてもいいのだろうか・・・莫大な量になって見難くなりそう。


アリーヴェデルチ。

0 コメント:

コメントを投稿