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を選択)
スクリプトの作成
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の値を見てみると、、、
実行前と値が変わり、positionのxの値が5となっています。
要はスクリプトからコンポーネントの値を変えることでGameObjectを操作することができるわけですね。
コード解説
では少し詳しくコードを見てみましょう。
まずTransformコンポーネントを格納する変数を宣言します。
次にStart()内でコンポーネントを取得し、変数に格納します。
最後にpositionの値を変更します。
今回は実行時に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座標方向に移動したというわけです。
おわりに
いかがだったでしょうか。
説明不足な部分もあると思いますが、初めてのブログなので大目にみていただけると幸いです。
次回は、キーボードから入力を受け取ってGameObjectを動かしてみようと思います。
KENTEMでは、様々な拠点でエンジニアを大募集しています! 建設×ITにご興味頂いた方は、是非下記のリンクからご応募ください。 https://hrmos.co/pages/kentem2211/jobs/A0012hrmos.co
さらに現在、25卒向けのプログラミング体験の募集もしています。 少しでも興味を持ったらぜひご応募ください。 recruit.kentem.jp