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

UnityではC#Scrriptでコンポーネントの値を操作してゲーム上でイベントを発生させます。C#Scriptを使いこなせる様になると、Unityでできる事が一気に増えます!

この記事は以下の様な方を対象としています

  • UnityではC#を使うと聞いた事があるけど、具体的に何をするのか分からない
  • Unity上でC#を使ってオブジェクトを操作してみたい

リーベルリーベル

C#を使うとどんな事ができるのかイメージできる様になると思います。
そして、Unityでのゲーム作成に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フォルダに作成されます。

作成時にファイル名を変更する事もできるので、必要に応じてファイル名も変更しましょう。ちなみに、ファイル名はクラス名と同じになっていないとエラーになるので、クラス名と合わせて下さい。デフォルトのままだとファイル名もクラス名もNewBehaviourScriptと設定されます。

■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を用意する
  • C#ScriptにはStart、Updateメソッドが存在する事を理解する
  • C#Scriptを編集する
  • オブジェクトにC#Scriptをアタッチする

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

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