背景屋が知っておきたいスクリプト 基礎編
スクリプトの作り方
Unity内のprojectウインドウで右クリックメニューからC#スクリプトを選択。
Unityインストール時にVisualStudio(以下VS)をインストールしていれば、ダブルクリックでスクリプトを開くとVSが立ち上がります。
スクリプトの編集はノートパッドでもできますが、プログラミング用のエディタの方が特定文字列のハイライトなど補助機能があるので、VS等のエディタの仕様をお勧めします。
Unityからファイルを作成していれば上記のように基礎的なフォーマットがすでに用意されている状態になっています。
本職プログラマではないので特に一つ一つの意味を理解する必要はありませんが、クラス名とスクリプトのファイル名が一致しているかどうかは注意しましょう。これが異なっているとエラーで動きません。
スクリプトの構成
スクリプトは大きく2つのパートで構成されています。
void start()
これはスクリプトが実行された瞬間に実行される部分になります。
void update()
これはスクリプトが動いている間実行され続ける部分になります。
オブジェクトが直進するだけの一番簡単なスクリプトを例に見ていきます。
上では2つのパートと書きましたが、実際にはその上にも記述されているものがあります。
これは宣言文と呼ばれるもので、どういう文字(もしくは文字列)をどういう意味で使うのかというのを定義する部分になります。
この宣言文の効力は括弧でくくられた中に限ります。
Start()内で宣言されたものはStart()内でのみ使え、Update()内で宣言されたものはUpdate()内でのみ使えます。
両方にまたがって使いたいものはさらに上の階層で定義する必要があります。
ここではPという文字に座標を格納したいので3次元のベクトル形式であるVector3という形式でPを宣言しています。
さらにSpeedという文字列に移動速度を入れたいので浮動小数点型のfloatという形式でSpeedを宣言しています。
ここにpublicという文字列がついていますが、これは後から数値を入力できるようにパラメータを公開するという意味になります。
void Start()を見ていきましょう。
ここではPという文字にこのスクリプト開始時点での座標をかくのうしています。
プログラミング言語では=は等しいという意味ではなく代入という意味となります。
次にvoid Update()を見ていきましょう。
ここではPではなくP.zとなっていますが、これはベクトルの一つの要素に注目した書き方で、P.zはPというベクトルのz成分という意味になります。
+=というのは既にある値に追加するという意味になりますので、ベクトルPのz成分にSpeedの値を追加するという意味になります。
最後にこのオブジェクトの座標にPの値を代入することで、元の座標からSpeedの値だけ進んだ位置に移動させるという意味になります。
そしてこのUpdate()は1回だけではなく毎フレーム計算が繰り返されるので、Speedの速さでz方向に進むという意味になります。
スクリプトの実用的な例
直進するだけではオブジェクトが次々に画面外に消えていくだけなのでこれにもう少しだけ手を加えます。
移動の開始地点と終了地点を設定し、Update()の中にifという条件分岐の分を追加しました。オブジェクトが終了地点を超えればオブジェクトは開始地点に戻り、そうでない場合はSpeedの分だけ進みます。
すると横スクロールし続けるフィールドを最小構成で作ることができます。
フィールド全体に使わなくても雲や鳥などを動かすだけでも背景に変化をつけることができます。
また、移動ではなく回転に使用することで風車や水車を動かすこともできます。
またもう少し複雑なスクリプトを書くことで自転と公転を一度に設定することもできるようになります。
また、ifなどの条件分岐を上手く使うことでより複雑な動きをさせることもできます。
この記事が気に入ったらサポートをしてみませんか?