こんにちは、ひっしーです。
今回は、UnityでC#を使いよりゲームらしい動きをするための方法を解説します。
多少のプログラミングが必要になりますが、頑張りましょう!
今回の目次
- C#スクリプトの作り方
- オブジェクトにスクリプトを付与する
- スクリプトから拡大縮小をしてみる
- まとめ
C#スクリプトの作り方
Unityでゲームらしく動かすために欠かせないものはC#のプログラミング言語です。
C#はプログラミングの一種でUnityと相性のいい言語と覚えてもらえばいいと思います。
では、Unity上で作成してみましょう。
プロジェクトビューの+ボタンをクリックしC# Scriptを選択してください。
すると、ファイルが作成されるので名前をControllerとして保存してください
これで、プログラムコードを書く土台が完成しました。
このプログラムを書くファイルのことをスクリプトといいます。
次は、中身を見てみましょう
作成したファイルをダブルクリックで開いてみてください
すると、Microsoft Visual Studioなどが開きコードが書かれていると思います。
画像の赤で囲っている部分がプログラミングコードになります。
では、こちらにオブジェクトを動かすためのコードを書いていきます。
とは言え、いきなりプログラミングをしろと言われてもわからない方が多いと思いますので、今回は以下のコードをコピペしましょう。
void Update()
{
if (Input.GetKey(KeyCode.UpArrow))//矢印キーの↑が押されたときに
{
//このスクリプトが追加されたオブジェクトのpositionをz方向に0.1ずつ動かす
transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z + 0.1f);
}
if (Input.GetKey(KeyCode.DownArrow))//矢印キーの↓が押されたときに
{
//このスクリプトが追加されたオブジェクトのpositionをz方向に-0.1ずつ動かす
transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z - 0.1f);
}
if (Input.GetKey(KeyCode.RightArrow))//矢印キーの→が押されたときに
{
//このスクリプトが追加されたオブジェクトのpositionをx方向に0.1ずつ動かす
transform.position = new Vector3(transform.position.x + 0.1f, transform.position.y, transform.position.z);
}
if (Input.GetKey(KeyCode.LeftArrow))//矢印キーの←が押されたときに
{
//このスクリプトが追加されたオブジェクトのpositionをx方向に-0.1ずつ動かす
transform.position = new Vector3(transform.position.x - 0.1f, transform.position.y, transform.position.z);
}
}
この時、もともとあるUpdateと重複しないように注意してください。
ここまで出来たら、キーボードの[Ctrl]+[s]でファイルを上書き保存してください
これで、スクリプトが完成です。
オブジェクトにスクリプトを付与する
C#のスクリプトが作成出来たら次は動かしたいオブジェクトにスクリプトを追加していきます。
そのためにオブジェクトを作成しましょう。
ヒエラルキービューからCubeを作成してください。
作成出来たらプロジェクトビューにあるControllerをヒエラルキービューのCubeにドラッグ&ドロップしてスクリプトを追加します。
ドラッグ&ドロップを行ったら正常に追加できているか確認しましょう。
Cubeを選択してインスペクタービューにスクリプトが追加されていることを確認してください。
これで、Cubeを動かす準備が出来ました。
では、Unityの再生ボタンでゲームシーンを再生してみてください。
矢印キーを押すことでオブジェクトが動くことを確認できたでしょうか。
動かしている最中のCubeのインスペクタービューにも注目してください
Positionのxとzの値が0.1ずつ変化していますね(処理が少し早いので見た目には0.2,0.3ずつ動いているように見えるかもしれませんが、、)
このように、C#のプログラムを動かしたい対象に付与することで付与されたオブジェクトがプログラム通りに動くことが出来るのです。
スクリプトから拡大縮小をしてみる
最後に、オブジェクトの大きさもスクリプトから変更してみましょう。
先ほどは移動のみでしたが、C#を使えば、インスペクタービューに表示されているほとんどの値を操作することが出来ます。
なのでここまではpositionを操作していましたが、Scaleも変更してみます。
Controllerを開いてプログラムコードを表示しましょう。
そこに以下のコードをコピペしてください。
//以下オブジェクトの拡大縮小
if (Input.GetKey(KeyCode.A))//キーボードのAが押されたときに
{
//このスクリプトが追加されたオブジェクトのscaleを0.1ずつ拡大する
transform.localScale = new Vector3 (transform.localScale.x + 0.1f, transform.localScale.y + 0.1f, transform.localScale.z + 0.1f);
}
if (Input.GetKey(KeyCode.S))//キーボードのSが押されたときに
{
//このスクリプトが追加されたオブジェクトのscaleを0.1ずつ縮小する
transform.localScale = new Vector3(transform.localScale.x - 0.1f, transform.localScale.y - 0.1f, transform.localScale.z - 0.1f);
}
コピペが出来たら、[Ctrl]+[s]で上書きしてください。
Unity画面に戻り、再生ボタンをクリックして動きを確かめましょう。
キーボードの[A]で拡大、[S]で縮小することが出来ます。
インスペクタービューにも注目すると値が変化していることを確認できます。
このように、C#のプログラミングを用いることでゲーム内のオブジェクトの状態を操作することが出来ます。
まとめ
ここまで、C#言語を使用して、Unityのオブジェクトを操作する方法を学んでいきました。
プログラミング言語については詳しく紹介しておりませんが、今回は以下のことを覚えてもらえると幸いです。
・C#言語はUnityと相性のいいプログラミング言語
・動かしたいオブジェクトにスクリプトを付与することでプログラムを有効にできる
・インスペクタービューのTransformはスクリプトからも操作することが出来る
C#の仕組みについて詳しく知りたい方は、今回コピペしてもらったコードにも//の後にどのような動きをさせているかコメントを書いておりますので確認してみてください。
また、詳しくプログラミングを学んでみたいという方は、本サイトの以下の記事で初心者おすすめの学習サイトを紹介しておりますのでそちらも閲覧してみてください。
駆け出しプログラマがProgateを使ってみた1【特徴と学べる言語解説編】
Unityを触ることで少しでもプログラミングにも興味を持ってもらえれば私としてもとてもうれしいです。
ゲーム感も出てきましたので引き続きUnityを触っていきましょう!
(Written by ひっしー)