敵を動かして当たるようにしたけど、何が起きているか分からなかった話
はじめに
前回の記事では、
Unityで初めてプロジェクトを作って、
- オブジェクトを置いた
- スクリプトを付けた
- でも正直よく分からなかった
というところまでを書きました。
今回はその続きとして、
敵を追加して、動かして、プレイヤーを追跡させて、
当たるようにするまでにやったことと、
その時に感じた疑問や不安 を記録します。
この時点でも、
仕組みの理解はほとんどできていません。
敵を追加してみようと思った理由
プレイヤーっぽいものを置いて動かしてみたあと、
これだけだと、
何がゲームっぽいのか分からないな
と思い、
次は 敵っぽいものを作ってみよう と考えました。
- 敵がいて
- 近づいてきて
- 当たる
これができれば、
少しは「ゲームらしく」なる気がしたからです。
敵オブジェクトを置いてみる
まずは、
- 新しく Sphere を置く
- これを「敵」ということにする
という、かなり雑な始め方でした。
この時点では、
- 敵クラスとは何か
- プレイヤーと敵の違い
- オブジェクトを分ける意味
といったことは、
ほとんど意識していません。
「見た目が違えば、役割も違うはず」
くらいの感覚です。
敵を追跡させてみる
次に、
- 敵がプレイヤーの位置を取得して
- そちらに向かって動く
という処理を書いてみました。
コード自体は、
- Transform を使う
- 座標を参照する
- Move する
といった説明を見ながら、
写経に近い形で実装しました。
動いたときは、
あ、ちゃんと追いかけてきてる
と思いましたが、同時に、
- この処理はいつ動いているのか
- どのタイミングで計算されているのか
- 毎フレームなのか、たまになのか
が、まったく分かっていませんでした。
当たるようにしてみる
次は、
- 敵とプレイヤーが
- 触れたら反応する
という処理を入れてみました。
Collider や Trigger を使うと
当たった判定が取れる、
という説明を見て実装しましたが、
- なぜ当たり判定が取れるのか
- どこでチェックされているのか
- 自分のコードなのか、Unity側なのか
という点は、
正直よく分からないまま でした。
動いたけど、不安が増えた
ここまでで、
- 敵は動く
- 追いかけてくる
- 当たると反応する
という状態にはなりました。
ただ、正直な感想は、
動いているけど、
何がどこで動いているのか分からない
という不安でした。
特に気になったのは、
- 敵が1体ならいいけど、増えたらどうなる?
- この追跡処理、ずっと動いてる?
- 当たり判定って、毎フレーム見てる?
といったことです。
この時点で分からなかったこと
整理すると、この段階で分からなかったのは、
- 敵の処理はどこで管理されているのか
- 各スクリプトは、いつ実行されているのか
- Unityがやっている処理と、自分が書いた処理の境界
- 処理が増えたら、何が問題になるのか
でした。
どれも、
「名前は聞いたことがあるけど、
実感はまったくない」
という状態です。
いまの自分なりの雑な理解
この時点での理解を、
かなり雑にまとめると、
- Unityが裏で何かをずっと回している
- その中で、自分のスクリプトも動いている
- でも、どれくらい動いているかは分からない
という感じです。
正しいかどうかは、
まだ判断できません。
次にやってみたいこと
敵を動かしてみたことで、
- 「処理が増えた気がする」
- 「でも、どこを見ればいいか分からない」
という状態になりました。
次は、
- ゲームっぽく敵とぶつかるとHPが減るようにしたい
- 敵のタイプを作って、速度とダメージを変えてみたい
- ずっと追われないように工夫したい
を調べてみたいと思っています。
おわりに
今回は、
- 敵を追加した
- 追跡させた
- 当たるようにした
- でも、仕組みは分からなかった
という段階の記録でした。
ただ、
動かせたけど、理解できていない
という状態を
自分で自覚できたのは、
一歩前進だと思っています。
引き続き、
このレベル感のまま学習ログを書いていきます。