Unity5でChatGPTを活用しよう

Unity5を使って、ChatGPTを活用したプロジェクトに挑戦しようと思います。では、なぜUE5ではなく、Unity5を選んだのでしょうか?その理由はいくつかあります。

まず、Unity5ではC#を使って開発ができます。これにより、ChatGPTの機能を簡単に活用できると考えています。UE5もコードを用いた開発が可能ですが、ブループリントが推奨されているため、ChatGPTとの親和性が若干低いと感じています。

また、ChatGPTはテキストで指示を与えることでコードを生成してくれるため、開発に大変便利です。これにより、素早く簡単にプロジェクトの試作ができると期待しています。

さらに、簡単なテストにおいても、Unity5の方が私の低スペックなゲーミングノートPCで動作しやすいという点が魅力です。このため、Unity5を選択しました。

以上の理由から、今回はUnity5とChatGPTを組み合わせて、新しいプロジェクトに挑戦していきたいと思います。どのような成果が得られるか、楽しみにしています。

試しに、C#のコードから、オブジェクトを生成してみたいと思います。

ChatGPTに「Unity5で、地面に接地したcubeを生成するコードを書いて。」と、お願いしてみます。

すると、すぐに、以下のコードを書いてくれます。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CubeSpawner : MonoBehaviour
{
    public GameObject cubePrefab;
    public Vector3 spawnPosition = new Vector3(0, 0.5f, 0);

    void Start()
    {
        SpawnCube();
    }

    void SpawnCube()
    {
        GameObject newCube = Instantiate(cubePrefab, spawnPosition, Quaternion.identity);
        newCube.transform.SetParent(transform);
    }
}

そして、その後の操作方法も教えてくれます。

このコードは、CubeSpawnerという名前のスクリプトを作成し、キューブを生成するためのプレハブ(cubePrefab)と生成位置(spawnPosition)を指定しています。Start()メソッドでSpawnCube()関数を呼び出し、地面に接地したキューブを生成しています。

このスクリプトを使うには、次の手順を実行してください。

  1. Unityエディタで新しい3Dオブジェクト(キューブ)を作成し、プレハブに変換してください。
  2. 新しい空のゲームオブジェクトを作成し、先ほど作成したCubeSpawnerスクリプトをアタッチしてください。
  3. スクリプトのインスペクター上で、CubePrefabフィールドに先ほど作成したキューブのプレハブをドラッグしてアサインしてください。

これで、シーンを再生すると、地面に接地したキューブが生成されます。

ChatGPT より

Unity がはじめてで、C#も何のことやらあまりわかっていない私でも、実際にこの通りにやってみたら、Cubeが生成されました。

さらに、そもそも、「地面をコードで生成できますか?」と、聞いてみたところ、

はい、地面もコードで生成できます。以下のC#コードを使って、Unity5で平面オブジェクトを生成することができます。新しいスクリプトを作成し、このコードを貼り付けてください。

using UnityEngine;

public class GroundGenerator : MonoBehaviour
{
    public Vector3 groundSize = new Vector3(10, 1, 10);
    public Material groundMaterial;

    void Start()
    {
        CreateGround();
    }

    void CreateGround()
    {
        GameObject ground = GameObject.CreatePrimitive(PrimitiveType.Plane);
        ground.name = "Ground";
        ground.transform.localScale = new Vector3(groundSize.x / 10, groundSize.y, groundSize.z / 10);
        ground.transform.position = new Vector3(0, -groundSize.y / 2, 0);

        if (groundMaterial != null)
        {
            Renderer groundRenderer = ground.GetComponent<Renderer>();
            groundRenderer.material = groundMaterial;
        }
    }
}

と、同様にコードを書いてくれて、さらにていねいに、以下のことも教えてくれました。

このコードは、GroundGeneratorという名前のスクリプトを作成し、地面のサイズ(groundSize)とマテリアル(groundMaterial)を指定しています。Start()メソッドでCreateGround()関数を呼び出し、平面オブジェクトを生成しています。

このスクリプトを使うには、次の手順を実行してください。

  1. 新しい空のゲームオブジェクトを作成し、先ほど作成したGroundGeneratorスクリプトをアタッチしてください。
  2. インスペクターで、地面のサイズとマテリアルを必要に応じて調整してください。

これで、シーンを再生すると、地面が生成されます。

これも、きちんと、生成されました。

ChatGPTさんは、コードの生成がとても得意なようです。

こんな簡単な事かもしれませんが、自分で、一から調べたらかなりの時間を要します。それを、30秒ほどで、答えを導き出してくれるなんて。。。

間違いもないし、はやいし、はかどります。

たしかに、Unity 5 のドキュメントを読み込めば、自力で、できることだし、この程度のことなら、そのまま、エディター上で置いた方が簡単かもしれません。

しかし、コードで生成できるというのは、なにかと応用が利きます。

私も、以前から、Unity を利用させてもらい、ある程度は、分かったつもりでいましたが、まだまだ、分からないことだらけだし、C# にいたっては、自力で学んでみたものの挫折していました。

ChatGPTの力を借りれば、もう少しだけ、理解を深めやすくなるかもしれません。

今後も、期待を込めてChatGPTとUnity の親和性を検証していきたいと、思います。

さいごまでお読みいただき、ありがとうございました。

コメント

タイトルとURLをコピーしました