見出し画像

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を活用していく方法もかなり効率が良さそうです。

自分の場合は、今のところこんな流れが良さそうだと感じました。

  1. まず自分で「何をしたいか」を考える

  2. コメントに処理の意図を書く

  3. 改行してGitHub Copilotにコードを生成してもらう

  4. 意図した処理になっていれば採用する

  5. 実際に動かして確認する

  6. 分からない部分や改善点をChatGPTなどにレビューしてもらう


いいなと思ったら応援しよう!