【Codex×Unity】非プログラマーが一瞬でゲームを作る②

はい。



↓最初の記事

↓記事一覧

←1つ前の記事

1つ次の記事→

使用するバージョン

前回はChatGPT Codex5.3を使用していましたが、最近ChatGPT5.5がリリースされたということで使っていきます。

いやー、前回でも十分すごかったですね。非プログラマーである私なら1か月くらいかかって作りそうなゲームを一瞬で作ってしまうのですからね。

わたくし本職はゲームプランナーなので、プログラムはからっきしです。ハハハ

仮背景も作っていただく

仮背景をつけてくれる

いつも会社でゲームのコースを新規作成するときは、一緒に仮背景というものを作成しています。これは、どういうシチュエーションなのかを説明するための簡単な背景です。

仮背景 がどうして必要か

要はこのままだと「なんやねんこの直方体」ってなるじゃないですか。

でもこうなったら「ああ街の道路の障害物をよけているのか」って分かりますよね。
じゃあ途中で速度標識とか置いて、もっとスピードアップさせたら面白いかも」とか、世界観にあったアイデアが生まれやすくなるんです。

そういうわけで、早い段階からシチュエーションを見えるようにするというのは大事なことなのです。

で、アセットは今までBlenderで作るかUnityで頑張ってブロックを組み合わせるかしかなかったのですが、なんとCodexが作ってくれます

自分

いくつかの問題があるので修正してください。

  • アイテム及び障害物は自動生成するようにして下さい。 生成する量、どのアセットをどのぐらい生成するかをパラメーターで指定できるようにしてください。
  • 走っていると、ガタガタします。原因はあくまで推測ですが、タイルの切り替わりの部分でCharactorControllerが接触し直すことでおかしくなっているのかもしれません。この問題を解決したいです。
  • ゲームスタートとゲームオーバー画面を作ってください。
  • 都会的な道路を走っている想定です。障害物となる車や人間、工事現場にあるものなどを、いくつか作ってアセット化し、それを生成するようにしてください。
  • 背景も、道路や町中のビルなど、アセットを生成し、自動で配置するようにしてください。

~数分後~

Codex

ほなスクリプトとアセット作ったからUnityに入れてみてや
UIもCanvas配置してスクリプトアタッチしてくれたら動くやで(意訳)

アセットは自分で用意しなくてもCodexが自動生成してくれる。
素早くゲームの印象を確認することが可能に。

エラーがあっても即対応

言う通り入れなおしてみましたが真っ赤なエラーが発生しました。
なのでエラー文をそのままCodexにコピペして叩きつけるように送信します。

自分

Assets\Scripts\World\TileManager.cs(66,13): error CS7036: There is no argument given that corresponds to the required formal parameter ‘isFirstTile’ of ‘TileManager.SpawnTile(bool, bool)’

これだけでエラーを自動で見つけて直してくれます。

このエラーが出たんだけど」とか、「このエラー直してほしいんだけど」とか、そういうことを言う必要はありません。コピペだけで大丈夫です。

もはやファイルさえも自動で変更してくれる

さらに、Codexが出力したスクリプトをUnityのプロジェクトがあるフォルダに手動でコピペするのがド面倒に感じたため、どうにかできないかお願いしてみます。

自分

D:\D_unipra\Surfers が、Unityのプロジェクトです。D:\D_unipra\Surfers\Assets がAssetsフォルダです。以降も直接これを変更するようにしてください

※補足:通常、UnityはAssetsフォルダというところにすべての自作アセットを入れます。このプロジェクトでもそうしているので、CodexにAssetsフォルダの位置を教えれば、その配下にスクリプトを入れてくれるため、今まで通り動くという訳です。

Codex

ほなファイルをいじってええか承認してくれや

承認するかどうかの質問が出るので、「はい」を選ぶと直接変更してくれるようになりめっちゃ楽です!

大体2で大丈夫だと思ってます

手作業を省略したい部分はすべてCodexに言いましょう!

なんならゲームオブジェクトも自動配置してくれる

Codex

スタート / ゲームオーバー画面 ※読まなくていいです
Canvasを作成し、以下の3つのPanelを作ります。

StartPanel: タイトルとStartボタン
HudPanel: スコアとコイン表示
GameOverPanel: Game Over表示とRetryボタン
設定:

Canvasまたは空のUI管理Objectに Assets/Scripts/UI/GameScreenController.cs を追加
Start Panel, Hud Panel, Game Over Panel を割り当て
Startボタンを Start Button に割り当て
Retryボタンを Retry Button に割り当て
HudPanel 内のスコア表示には HUDController.cs を使う
GameScreenController が状態に応じてPanel表示を切り替え………………

はい、面倒くさいです。なので調子に乗ってこんなことを言ってみました。

自分

Canvasにボタンを作って配置しようと思ったのですが、あまりセンスがありませんでした。 自動でかっこいいUIレイアウトを考えて、スタート / ゲームオーバー画面を設定していただけますか?

ほなまた承認を…

この依頼で3~4回承認したので、何かとても大きな変更が加えられている気がします。

数十秒待ちました。

Codex

使い方はかなりシンプルになったで。

  • Unityで D:\D_unipra\Surfers を開く
  • コンパイルが終わるまで待つ
  • ゲーム用シーンを開く
  • Tools > Runner > Create Stylish Game UI を押す
  • 作成された RunnerUI_Auto がシーンに入っていることを確認して再生

おお!Toolを一つ選ぶだけでUIができるみたいです。

では押してみましょう。ポチー!

😮!

やるやんけChatGPT…。

デザイン面もお任せできる

その後の修正ダイジェスト

おおむねプログラミングについてはあまり知らなくても進められるのですが、時々Unityに関する知識がないと詰まることがあります。

例えば以下の不具合は、スクリプトに起因しません。

‘Ch33_nonPBR’ AnimationEvent ‘OnFootstep’ on animation ‘Run_N’ has no receiver! Are you missing a component?

これはスクリプトではなく、使用したアニメーションにレシーバーというものがついていることが問題なので、アニメーションを編集する必要があります。

そのほかにも空中のジャンプアニメーションが着地アニメーションに遷移しない問題が出たときには、animator周りに関する知識があったほうが適切に指示を出せるので、その分トークンを消費しなくて済むでしょう。

ジャンプをJumpStart、InAir、JumpLandと分けました。JumpStartからInAirは終了時間ありにすることで遷移できますが、InAirからJumpLandまでは自然に遷移しません。空中にいる時間に応じてInAirからJumpLandに遷移するようにしたいです。

これはアニメーションが短すぎて何度も再生されていることが原因です。
このようにアニメーションの遷移を調整して、1秒間はコケるようにします。

インスペクター上で同じ秒数スタンするように設定すれば、何度もコケなくなります。

完成!

多少入力して、完成!

キャラも差し替えればいい感じに動くと思います。このシリーズは終わりです。ありがとうございました。(力尽きた)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


ABOUT US
夜中
ぶっちゃけ本業より3DCGの方が好きなゲームプランナー。

このサイトではBlender愛を語りつつ、Amazonのアソシエイトとして、夜中が適格販売により収入を得ています!