GitHubCopilotとの邂逅
今回も、以下のUdemy講座を元にゲーム開発を学んでいきたいと思います。
まずはキャラクターをクリックした位置に移動させる処理から。
これくらいは講座の内容見なくても出来ますよ。ふふん♪(カタカタ)
最初の印象は最悪
ある程度コードを打ってると、いきなりよくわからないコードが表示されるようになりました。なんじゃこりゃ?

これはGitHub Copilotのインライン補完ってやつらしいです。
こんなもんいらん!!と思いつつも設定方法がわからず、Escキーで却下できることがわかったので、しばらくは出てくる端から却下しまくってました。
その時は突然訪れた
邪魔なCopilotに辟易しつつ、移動処理を書き終えいざ実行!
…動きはするけどなんか目的の位置に到達した後ブルブルしてます。
最初に書いたコードはこんな感じ
// 移動の方向を計算する。
Vector3 moveDirection = (targetPosition - transform.position).normalized;
// フレームレートの差によってスピードが変わらないようにして移動
transform.position += moveDirection * moveSpeed * Time.deltaTime;そうか、移動した際に目的の位置を通り過ぎて、それで行ったり来たりしてるのか。となると、別途、現在の速度から「1フレームでどれだけ移動するか」を計算して、移動先までの距離が1フレームの移動量より小さくなったら・・・うん、これだ。
あれこれ考えたのちにいざ実装。まずはコメントを打ってっと・・・
え!
さっき自分の頭で考えてたコードを一発で実装してくれました。
// 移動の方向を計算する。
Vector3 moveDirection = (targetPosition - transform.position).normalized;
// 1フレーム当たりの移動量計算
Vector3 moveVector = moveDirection * moveSpeed * Time.deltaTime;
// 移動先までの距離が1フレームの移動量よりも小さい場合は、移動先に直接移動する。
if (Vector3.Distance(transform.position, targetPosition) < moveVector.magnitude)
{
transform.position = targetPosition;
}
else
{
transform.position += moveVector;
}コメントから意図を読んでコードにしてくれたのか。す、すげぇ・・・
そしてよみがえる記憶
そんなこんなで、この驚きと感動をチャッピーと話してたら会話の中にMoveTowardsなる単語が・・・あ、思い出した。
そうです、あれこれ考えてきましたが結局Vector3.MoveTowardsを使えば1行で済むのでした。ちゃんちゃん。
まとめ
今回のように、最初からすべて自分でコードを書くのではなく、GitHub CopilotなどのAIを活用していく方法もかなり効率が良さそうです。
自分の場合は、今のところこんな流れが良さそうだと感じました。
まず自分で「何をしたいか」を考える
コメントに処理の意図を書く
改行してGitHub Copilotにコードを生成してもらう
意図した処理になっていれば採用する
実際に動かして確認する
分からない部分や改善点をChatGPTなどにレビューしてもらう
