今回はUnityのC#Script(スクリプト)を使用してオブジェクトを動かす方法を解説します。

C#Scriptを使いこなせる様になると、Unityでできる事が一気に増えます!

「UnityではC#を使うと聞いた事があるけど、具体的に何をするの?」という疑問をお持ちの方もいるかもしれませんが、今回ご紹介する内容を見てもらえると大体イメージが湧くと思います。

まだC#は使った事が無いという場合はC#のキャッチアップも必要になりますが、Unityでのゲーム作成に必須のスキルだという事も分かってもらえるかと思います。

C#Script(スクリプト)でオブジェクトを動かす

では、C#Scriptを使ってオブジェクト(今回は青いボール)を動かしてみたいと思います。

準備

まずはC#Scriptを使って動かす対象のオブジェクトを準備します。

オブジェクトの作成方法等については今までにお伝えした内容を参照してもらえれば簡単に作れると思います。

今回は動かす対象のオブジェクトとしてのボールを用意します。台座の上のボールを置きました。

ちなみに、ボールは3DオブジェクトのSphereを作るだけで簡単にできてしまいます。台座はCubeから作れます。

■台座に置かれたボール

手動でボールを動かす

C#Scriptを使ってオブジェクトを動かす前に手動でオブジェクトを動かしてみましょう。

以下のいずれかの方法で、ボールのオブジェクトを操作できます。

  • Sceneビューのオブジェクトをクリックして、移動ツールで動かす
  • InspectorウィンドウのTransformコンポーネントのPositionの値を変更

■TransformコンポーネントのPosition操作(ボールがY軸上に移動)

C#Scriptを作成

さて、C#Scriptを作成しましょう。

C#Scriptを作るためにはProjectウィンドウのCreateをクリックして、C#Scriptを選択します。

■ProjectウィンドウのCreateをクリックして、C#Scriptを選択

 

以上の操作でC#ScriptがScenesフォルダに作成されます。

作成時にファイル名を変更する事もできるので、必要に応じてファイル名も変更しましょう。

■C#Script作成される

ここでC#Scriptを開いてみましょう。

■C#Script(デフォルト)

デフォルトのC#Scriptの中身を少しだけ紹介しておきます。

StartとUpdateというメソッドが登場しています。

それぞれの意味は、とりあえず以下の通りと思っておけばOKです。

  • Start:初期化処理
  • Update:一定時間毎に繰り返される処理

つまり、C#Scriptが呼び出された時点でStart(初期化処理)が走り、その後はUpdate(繰り返し処理)が走ります。初見だと何だそれ?と思うかもしれませんが、とりあえずそんなもんだと思っておいて下さい。

C#Scriptを編集

デフォルトのコードを元に、Unityの画面上に表示されている青色のボールを画面上部へと移動させていくコードを追記してみたいと思います。

そのためにStart、Updateメソッドそれぞれで以下の処理を行う様にしましょう。

  • Startメソッド:transformコンポーネントを取得
  • Updateメソッド:transformコンポーネントの座標(Y軸のみ)を変更する

ちなみにUpdateメソッドは延々と繰り返されるので、青色のボールは延々とY軸を移動していく事になります。

コンポーネントを取得する場合は「GetComponent」を使用します。

transformコンポーネントを取得する場合には以下の様に記述します。

■GetComponentでtransformコンポーネントを取得

また、transformコンポーネントのposition(X軸、Y軸、Z軸)を変更したい場合は「Vector3」を使用します。
Vector3の詳細についてはVector3の公式リファレンスを参照

以下の様に記述する事で、positionのY軸を0.1fだけ動かす事ができます。

■Vector3でtransformコンポーネントのposition(Y軸)を変更

※この処理をUpdateの中に記載するだけで、何度も繰り返し呼び出してくれます。

という訳で、これらの処理をデフォルトのC#Scriptに追記しましょう。
※記載方法を多少変更している箇所がありますが、内容を見ていただけるとすぐ分かると思います。

■C#Scriptを変更

オブジェクトにC#Scriptを適用

C#Scriptができあがったら、青いボール(Sphere)のオブジェクトにドラッグしてあげましょう。

ドラッグしてあげるだけで、オブジェクトのコンポーネントにアタッチされます!

ちなみに、アタッチするタイミングはC#Scriptの編集前でも大丈夫です。

■C#Scriptをボールのオブジェクトにドラッグしてアタッチ

■C#Scriptがアタッチされている

実行してみよう!

さて、無事にオブジェクトへのアタッチも完了したので、実際にゲーム画面で動作を確認してみましょう。

この状態で、ゲーム実行ボタンを押せば動作を確認する事ができます。

■ゲーム実行画面

想定通りに、青いボールがY軸を移動(画面真横から見て上に移動)していますね!

簡単ではありますが、C#Scriptによってオブジェクトを操作できる!という事が実感できたかと思います。

まとめ

今回はUnityのC#Scriptを使用してオブジェクトを動かす方法についてご紹介しました。

以下の流れを意識すれば、すぐにC#Scriptでオブジェクトを動かす事は簡単だと思います。

  • C#Scriptを用意する
  • C#ScriptにはStart、Updateメソッドが存在する事を理解する
  • C#Scriptを編集する
  • オブジェクトにC#Scriptをアタッチする

様々なオブジェクトを用意して、様々なコンポーネントに動きを加えてあげれば、ゲームの中の世界にまさに命が吹き込まれます!その時にC#Scriptは非常に役に立つと思います。

例えば、街を作ってその中を移動する人達を作ってあげれば、賑やかな街へと変わっていきます。そうしてゲームプレイヤーは生き生きとしたゲームの世界の中に引き込まれていくと思います。