どもです!「崩壊スターレイル」で飲月と白露を2枚抜きしてうれしいFORM_07っすうぅぅぅい!!
白露持ってなかったからうれしい。
前回↓は敵をちょっと動かして倒せるようにしましたね!
【Unity】最強のゲームクリエイターに俺はなる | Root Motionで敵を動かそう - FORM_07’s blog
今回は敵に攻撃させて、さらにサフィアちゃんの回避、そしてできたらパリィまで実装しちゃいたいと思います!
まずは敵の攻撃から。
とりあえずPlayerの位置を取得させてみるか。
Playerと敵がある程度近くなったときに敵を反応させたいから、、、、
距離を出さないとナ。。。
距離の比較にはSqrMagnitude()を使います。
こいつはベクトルの長さを2乗した値を返してくれます。
これを使ってPlayerと敵の距離を判定していくぅう!
これでよし。
・・・・で、Playerとの距離が近いときに何秒かおきに攻撃してほしいから、、、
「何秒かおきに」の実装はこれでよさそうだな。
あとは攻撃させればいいわけだけど・・・
これがぴゅーーってなってグサッってなればいいか。
これでPlayerめがけて体当たりしてくれるはずだ。
あれぇーーーー・・・・・・(゚◇゚)
・・・・・おかしいな。
・・・・・・ッスゥーーーーー・・・・・・(-.-;)
ん!?
・・・なんかAnimatorコンポーネントをオフにして実行したらちゃんとPlayerに向かって体当たりしてきた。
なにこれ・・・( ・o・)
しかも試しにanimator.speedを0にしてアニメーションを停止させてみても駄目だったし、、、
理由がわかんないからコンポーネントを無効にするしかないか。
なんかモヤモヤするなぁ・・・(=_=)
まぁいいや。
・・・ってまてよ。Animatorコンポーネントオフにしたらアニメーションしないじゃん。(当たり前だろ)
やーーめた。
敵の挙動はスクリプトでどうにかするか。。。
結局ステート駆動システムで実装することにした。
特に特殊なことはしてないね。
やった~~~~!!
動いたし安定してる。
挙動の調整は必要だな。。。(._.)
かなり手こずったがここからさらにサフィアちゃんの回避を実装する。
回避の概念を実装するにはまずダメージを受けるようにしないとな。。。
ってなわけで攻撃用の当たり判定をつくって、、、
攻撃判定のコードを変えて、、、
PlayerとEnemyそれぞれの被攻撃時の処理を用意して、、、
攻撃時にスプライトの色を赤くする処理を付けてあげたら、、、
っしゃぁぁい!ダメージが実装できたぞ~~~~~!!
間髪入れずに回避を実装していく。
まずはInputSystemをいじくりまわす。
で、コード。
これでよし。
あとは当たり判定をいじくって回避できるようにしてやればいい。
要は無敵時間を作る。
ちょっと実装がスマートじゃないしコードが汚いな。。。
まぁひとまずよしとしよう。
こんなかんじで動いてくれました。
若干ゲームっぽくなってきたな。
よ~~~~~~し今回はここまでぇぇぇぇぇい!
パリィはまたの機会に断念します。
かなり手こずったな。。。
この前立てた予定も一週間遅れる羽目に、、、
(スケジュール通りにいくとは端から思ってなかったけども・・・・(^x^))
次回からはマップに本格的に取りかかっていきたいと思います!!