【Unity】初心者の2Dゲーム制作/スクリプトで画像を動かす

Unityのスクリプトを使って、ゲームオブジェクトを自由に動かす方法を解説した記事のアイキャッチ画像です。
Unity
この記事は約5分で読めます。

おはようございます!

1月16日 木曜日。ときどき晴れ間が見える曇り。
予想気温9/4℃。寒いわけです。午後は太陽がもう少し顔を覗かせそうな。

さて、今日もゲーム制作を学んでまいります。

今日の教材はこちら、

[PR]

 

よしやっていこう!

 

スポンサーリンク

シーン
 →ゲームの「1つの画面」や「1つのステージ」などのこと

 

・Unityの「シーン」のイメージ

Unityの2Dゲームにおけるシーンの遷移をフローチャートで示した画像です。タイトルシーンからメインゲームシーン、そしてゲームオーバーシーンへの流れが視覚的に表現されています。
Unityで作成した2Dゲームのシーン遷移の流れ

 

・メニューの「ファイル – 新しいシーン」から「シーン」を新規作成

Unityで新規2Dシーンを作成する画面を示しています。[Basic 2D(Built-in)]テンプレートを選択し、[Create]ボタンをクリックすることで、新しい2Dシーンを作成することができます。
[Basic 2D(Built-in)]テンプレートを使用して新規シーンを作成

 

・「シーン」をメニューの「ファイル」→「保存」で保存しておく(シーン名:chap3)

Unityエディタのシーンビュー。Scenesフォルダ内に新規シーン「chap3」が作成されている様子。
Scenesフォルダ内に新規シーン「chap3」が作成されている様子

 

・スクリプトの考え方
 ①「いつ」=きっかけ
 ②「何をするのか」=実行内容

 

・改めて車の画像で作ってみる
 →画像配置、スクリプトをアタッチし、スピードアップ(1→20)して動かしてみると

Unityエディタのインスペクターウィンドウ。車の画像にアタッチされたスクリプトの「Speed」変数の値が20に設定されている様子
車の画像にアタッチされたスクリプトの「Speed」変数の値を20に設定
Unityエディタで実行中のシーン。スクリプト「ずっと水平に移動」がアタッチされた車が、Speedプロパティの値20で水平方向に高速で移動している様子。
Speedプロパティの値20で水平方向に高速で移動している様子

はや

 

<スクリプトを見てみる>

Unityエディタのスクリプトエディタ。C#で記述された「ForeverMoveH」スクリプトのコードが表示されている。
C#で記述された「ForeverMoveH」スクリプトのコード

C#か~。Javaに似てる。

JavaがC#に似てるのか。 

 

移動速度のデフォルトは「1」となっている。

public float speed = 1; //[速度]

 

Unityでは、「スピード」のような調整したい値は、以下の形の通り「public」で記述する。

 

・「ずっと」と「水平に移動」のコーディング箇所

Unityエディタのスクリプトエディタ。C#で記述された「ForeverMoveH」スクリプトのコードの一部が拡大表示されており、吹き出しでコードの説明がされている。
スクリプト「ずっと水平に移動」のコード解説

 

書式ゲームオブジェクトをX、Y、Z方向に移動させる

 

 

 

複数のスクリプトをアタッチすることができる。

「ときどき、曲がる(SometimeTurn)」を追加でアタッチする。

Unityエディタ右側を見ると、「SometimeTurn」が追加されているのがわかる。

Unityエディタのインスペクターウィンドウ。オブジェクトにアタッチされたスクリプトの一覧に、「SometimeTurn」スクリプトが追加されている様子。
スクリプト「ときどき、曲がる」を追加

 

ちなみに、スクリプトを追加するときは↑のやり方でも問題ないが、対象の画像を選択後「コンポーネントを追加(Add Component)」ボタンからでも追加できる。

・追加するところ

・追加後

Unityエディタのインスペクターウィンドウ。オブジェクトのインスペクター部分に「Add Component」ボタンが表示されており、検索ボックスに「Som」と入力している様子。
スクリプトコンポーネントを追加
Unityエディタのインスペクターウィンドウ。オブジェクトに「SometimeTurn」スクリプトが追加された状態。
スクリプト追加完了

 

・「ときどき、曲がる(SometimeTurn)」追加後の動き

Unityエディタで実行中のシーン。スクリプト「ずっと水平に移動」と「ときどき、曲がる」がアタッチされた車が、水平方向に移動しながらランダムに回転している様子。
車の動きに変化を加える

 

・[Angle]プロパティ=「120」、[Max Count]プロパティ=「80」にしてみると

Unityエディタで実行中のシーン。スクリプト「ときどき、曲がる」の「Angle」プロパティを120、「Max Count」プロパティを80に設定した車が、水平方向に移動しながらランダムに回転している様子。
パラメータ変更による動作の変化

 

<スクリプトを見てみる>

Unityエディタのスクリプトエディタ。C#で記述された「SometimeTurn」スクリプトのコード。コードの各行に吹き出しで説明が加えられている。
SometimeTurnスクリプトのコード解説

 

書式ゲームオブジェクトを回転させる

 

 

 

「ときどき、曲がる(SometimeTurn)」スクリプトで[Angle=180]にすると、上下逆さまになって逆方向に進むようになる。

それはあれだな・・・

 

「ときどき、曲がる(SometimeTurn)」スクリプトを削除し、「ときどき、反転する(SometimeFlip)」スクリプトをアタッチする。

Unityエディタのインスペクターウィンドウ。オブジェクトにアタッチされた「SometimeTurn」スクリプトの左側に表示されているマイナスボタンにカーソルが当たっている様子。
スクリプトの削除
Unityエディタのインスペクターウィンドウ。オブジェクトのインスペクター部分に「Add Component」ボタンが表示されており、検索ボックスに「som」と入力している様子。
スクリプトコンポーネントを追加

 

「Play」ボタンにて動作確認をすると、

Unityエディタで実行中のシーン。スクリプト「ときどき、反転する」が追加された車が、水平方向に移動しながらランダムに左右反転している様子。
水平移動と反転の組み合わせ

おお~

 

<スクリプトを見てみる>

Unityエディタのスクリプトエディタ。C#で記述された「SometimeFlip」スクリプトのコード。コードの各行に吹き出しで説明が加えられている。
SometimeFlipスクリプトのコード解説

 

なるほど!右に動いてるときは元の絵なので反転させてないのね。つまり、

Unityエディタのインスペクターウィンドウ。スクリプト「SometimeFlip」の設定画面。上下反転処理を有効にした場合と無効にした場合の動作の違いが視覚的に示されている。
上下反転処理の有無による動作の違い

 ①右に動いてる時:flipFlag=false

 ②右端で折り返す時:「flipFlag = !flipFlag;」で「flipFlag=true」になる

 ③左に動いてる時:flipFlag=true

 ④左端で折り返す時:「flipFlag = !flipFlag;」で「flipFlag=false」になる
 

※④の時は、元の絵に対して180度回転させているわけだから上下反転は必要ない

   ですよね。。だって、上下反転させた正常な車の画像に対して180度回転させるとまた上下逆さまになってしまうからねぇ。。考え方は合ってると思います。

あってるはず・・・

 

書式trueとfalseを切り替える

 

書式ゲームオブジェクトの絵を上下反転させる

 

 

 

 

最後ちょっと頭がこんがらがってしまいましたが、ようやくスッキリしました。

図解にはしませんが、要するに180度回転後は実像で、上下反転後は虚像ってことですね。

最初の折り返しの時の右から左に移動する車の画像は虚像を見ているってことです。

実像は上下逆さまのまま。

180度回転処理は常に実像に対して行われている、はず。。。

まちがいない・・・

 

今日はスクリプトをアタッチしてみて終わりかな~と思ってたら、最後の最後で頭をめっちゃ使いました。

 

ではでは、寒い夜に備えるためこれにて終了です。

 

おつかれさまでした~(=゚ω゚)ノ

 

 

 

 

PAGE TOP
タイトルとURLをコピーしました