Unityでゲームをつくろう【#1 スクリプトからGameObjectを動かしてみる】

23卒、第二開発部のT.Nです。
Unityに触れて約3ヶ月。初心者にドがついた程度の者ですが、Unity初心者へ向けて解説します。

何回かに分けて記事を書き、最終的には簡単な3Dゲームを作るところまでいければと思っています。
第一回は【スクリプトからGameObjectを動かしてみる】です。

対象者
  • Unityを入れたはいいが何をすれば良いかわからない人
  • とりあえず何か作ってみたい人

実行環境

  • PC : Mac mini
  • チップ : Apple M2
  • OS : MacOS Ventura 13.4
  • VisualStudio : 17.6.3
  • Unity : 2021.3.11f1

初期化時の位置を変える

GameObjectの作成

まずは動かす対象であるGameObjectを追加します。
Hierarchyウィンドウの何もないところを右クリックして、追加したいオブジェクトを選択します。(今回は3D Objectの中のCubeを選択)

GameObjectの追加

スクリプトの作成

Assetsの中にScriptsフォルダーを追加し、その中にスクリプトを作成します。名前はCubeControllerとしました。
※Scriptsフォルダー内に作らなければいけないというわけではありませんが、スクリプトを入れておくフォルダーを作っておくと目的のスクリプトを見つけやすくなります。

作成したらダブルクリックします。するとエディタが開くと思います。

開いたら以下のコードを打ち込んでみましょう。

コード
using UnityEngine;

public class CubeController : MonoBehaviour
{
    private Transform _cube;

    void Start()
    {
        _cube = GetComponent<Transform>();

        _cube.position = new Vector3(5, 0, 0);
    }
}

打ち込んだら、InspectorにCubeの情報が表示されている状態でスクリプトをドラッグ&ドロップ(アタッチ)します。

スクリプトをアタッチ

Inspectorにスクリプトが追加されたのを確認したら実行してみます。
するとCubeが中心からズレた位置に表示されました。

実行結果

さらに、Inspectorの値を見てみると、、、

実行後のInspector

実行前と値が変わり、positionのxの値が5となっています。
要はスクリプトからコンポーネントの値を変えることでGameObjectを操作することができるわけですね。

コード解説

では少し詳しくコードを見てみましょう。

まずTransformコンポーネントを格納する変数を宣言します。
次にStart()内でコンポーネントを取得し、変数に格納します。
最後にpositionの値を変更します。

コード解説01

今回は実行時にGameObjectの位置を変えただけなので、あまり動きがありませんでした。
ではもう少し動かしてみます。

Updateで動かす

先ほどのコードを以下のコードに変更してみましょう。

コード
using UnityEngine;

public class CubeController : MonoBehaviour
{
    private Transform _cube;
    private Vector3 _cubePos;

    private void Start()
    {
        _cube = GetComponent<Transform>();

        _cubePos = new Vector3(0, 0, 0);
        _cube.position = _cubePos;
    }

    private void Update()
    {
        _cubePos.x += 0.01f;

        _cube.position = _cubePos;
    }
}

コードが打てたら実行します。
するとCubeが右へ動いて、画面から見切れたと思います。

コード解説

Update()はフレームごとに実行されます。Updateが呼ばれるごとにcubePosのxの値が増えていき、それをpositionの値にしているのでx座標方向に移動したというわけです。

コード解説02

おわりに

いかがだったでしょうか。
説明不足な部分もあると思いますが、初めてのブログなので大目にみていただけると幸いです。

次回は、キーボードから入力を受け取ってGameObjectを動かしてみようと思います。

KENTEMでは、様々な拠点でエンジニアを大募集しています! 建設×ITにご興味頂いた方は、是非下記のリンクからご応募ください。 https://hrmos.co/pages/kentem2211/jobs/A0012hrmos.co

さらに現在、25卒向けのプログラミング体験の募集もしています。 少しでも興味を持ったらぜひご応募ください。 recruit.kentem.jp