利用したのは無料のgpt3.5です。
はじめに
話題になってからから少しだけ使ってましたが、今回はそれなりの量のコードを生成してもらいました。
タイルマップがあるエリアの中心点とサイズを取得したいという質問を投げました。
最初に「unityで」ということを伝えたほうがよいでしょう。この場合はその前の質問がunity関連だったので、うまく伝わってます。
エラーの修正
これ以降、複数回やり取りしました。エラーが出れば、このように修正をお願いしました。
注意点として、生成されたコードを試すとき、他のソースコードと混ぜて使うのではなく、新しく作ったソースコードに生成されたコードだけコピペして使ったほうがいいでしょう。
やり直しが何回も発生するため、他のコードと混ざっていると、貼り付け時の調整が面倒なので。
無限ループ
生成されたコードを確認すると、無限ループに入りました。
その修正をお願いしましたが、改善されず。
以後、三回ほど「ループが終わりません。」などと伝えても、改善されませんでした。
コードを見ると、かなり無駄な処理をしているなと思い、下記のように質問。
「はい、処理が軽くなる可能性があります」という返答が。
いや、知ってるんだったらやってくれよwと思いました。
これで無限ループが解消されました。逆に、この辺りは人間が指示しないといけない部分なのかなと。
出力結果がおかしい
今度はマップの四角いエリアの中心座標がずれるというバグが発生してました。
中心点を求めるコード部分を見てみると、一つ一つのマップのセルを加算して平均を出してるようだったので、ここでずれているのかなと思いました。
サイズは正確に出力されてました。そこで、中心座標を求めるためのRect関数を使えばいいと思い、そのためにマップエリアの左上の座標が必要なので、その指示をしました。
一つ前の質問と違うので、修正元のコードを貼り付けました。
これで生成されたコードとRect関数を使って、中心座標を正確に出力することができました。
まとめ
chatgptを使っていて、頻繁に間違った情報を答えるので、いまいちだな~と思っていたのですが、質問するほうも頭を使ったり、粘れば十分使えます。
逆に、今回のような少し複雑なコード生成は、まったくの初心者では難しいかなと思います。
また、バグが解消されない場合は自分のミスを疑ったほうがいいかも。
なによりも、指示するだけでいいので、頭が疲労しない。これが一番重要です。