羊オブジェクトの移動と生成処理 クリックアイテムを動かそう

Unity 放置インフレ系クリッカーゲームの作り方 (スマホ化対応)


Unityの本格ゲーム制作講座はこちら
【30日間の全額返金保証付き】

前回は、売却ボタンの作成と、羊毛(Wool)の売却処理を実装しました。

前回の記事↓

アイテムの売却処理の作り方 クリックで生成したアイテム(羊毛)を換金する
前回は、羊から羊毛(wool)オブジェクトが出てくるようになりました。 前回の記事↓ 今回はその刈り取った羊毛(Wool)の売却処理を実装していきます。 Walletの作成 まず手持ちのお金を管理・表示するオブジェクト用意しまし...

今回は羊オブジェクトの生成・移動処理をメインで作っていきます。

改めてクリッカーゲームのルール設定について

さて、もう5回目となりちょっとずつ要素がそろってきました。

ここで一つ、どのようなゲームにしていくのかもうちょっとだけ具体的に決めておきます。

クリッカーゲームと言えば、1クリック当たりの報酬(金額・今回で言うと羊毛(Wool))もお金を消費して増やすことが出来、どんどんと金額がインフレしていくのが特徴です。

今回は一風変わったクリッカーゲームとして

  • 購入することで羊をどんどん増やすことが出来る
  • 色違いの羊は色違いの羊毛が取れ、高く売れる
  • 羊毛を刈り取られた羊は裸になるが、一定期間で毛が復活してまた刈り取れるようになる

というルールにします。 すなわち

  1. 羊を購入して追加
  2. 羊をクリックして羊毛を溜める
  3. 羊毛を売却してお金を貯める
  4. より高い羊(色付き)が買えるようになる
  5. 1.へ繰り返し

のサイクルにしたいと思います。

羊オブジェクトの生成 クリックアイテムを作る処理

それでは、羊生成処理を作っていきます。

SheepGenerator作成

まず、「羊を生成」を役割とする「SheepGenerator」を作ってしまいます。

HierarchyでCTRL+SHIFT+Nでオブジェクトを新規作成し、スクリプトも新規で追加をします。

  • 名前:SheepGenerator
  • 新規スクリプト名:SheepGenerator

上記のように設定をし、

SheepGeneratorスクリプトを修正していきます。

変数sheepPrefabをSerializeFieldで宣言して、InspectorでSheepオブジェクトのPrefabをセット出来るようにし、CreateSheepメソッドでは、(とりあえず)sheepPrefabをInstantiate(生成)だけしています。

ただ、このままでは確認が出来ませんので、Update関数内で

if (Input.GetKeyDown(KeyCode.S)) とし、キーボードの「S」が押されたかどうかを判断し、押されて行場合は

CreateSheep();

羊を実際に生成するようにしています。

では、保存をして、Unity Editor上、InspectorでAssets/Prefabs/Sheepプレハブをセットして、再生してみましょう。

Sキーを押すたびに羊が生成されます。

が、場所が同じ場所ですね。いきなり画面に表示されるのもそもそもかっこ悪いので、画面の外で生成して、移動するようにします。

ついでに、今は羊をクリックすると毛が刈られた絵に差し替わるのですが、ずっと刈られたままです。これも何とかしましょう。

羊の移動処理 画面の端から端までオブジェクトを動かすスクリプト

Hierarchyのsheepオブジェクトを選択し、InspectorからSheepスクリプトをダブルクリックして以下のように編集します。

では解説していきます。

まず、カット前のSpriteを保持するための変数 defaultSprite
移動速度用の変数 moveSpeedを用意しています。

次に、初期化用メソッド Initializeを用意して画像の初期化(毛がある状態に)と、初期位置のセットと、moveSpeedのセット(-1.0f~-2.0fの間のランダム)をしています。

そして、Startメソッド内では羊の最初の画像(毛がある状態)の退避と、用意した初期化用メソッド Initialize();を呼んでいます。

Updateメソッドでは、用意した移動速度用の変数moveSpeedを使って、羊オブジェクトの位置を移動させています。

また、この時 Time.deltaTimeをかけることで、フレームレートに移動速度が依存しないようにしています。

では、保存をして、UnityEditorで再生をしてみましょう。

最初からシーンに配置されているSheepオブジェクトも画面外から移動してきますし、Sキーを押すたびに生成されるSheepオブジェクトも画面外からランダムの即で移動してくるようになりましたね!

ただ、縦位置がみな同じなので、一列になってしまっています。

今は縦位置はy=0で生成されていますが、金額のTextに被らないぐらいまでの範囲でランダムにしたいですね。0~4ぐらいでちょうど良さそうです。

Initializeメソッドの

を以下のように修正します。

次に、画面外に行った羊がそのまま遠くまで移動し続けてしまっています。

ある程度の位置まで移動したら、またInitializeメソッドを呼んで、位置をリセットしましょう。

Updateメソッドの

ここで移動をしているので、この移動直後に位置の判定をしてあげればよさそうです。

以下のように修正してみましょう。

最終的にSheepスクリプトは以下のようになります。

では、スクリプトを忘れずに保存し、UnityEditorで確認してみましょう。

↑の確認では羊は最初からいる1匹に加え、Sキーを2回押したので、系3匹ですが左端まで移動した羊が右端に移動しているのと、クリックして裸になってしまった羊が右端に移動すると同時にまた毛がある状態になっているのも分かると思います。

おさらいと次回予告

今回は羊オブジェクトの移動処理と生成処理を作りました。

次回はこの羊オブジェクトの初期データを作っていきます。

次回の記事↓

ScriptableObjectの使い方をマスター! 羊パラメータの作成
前回は、羊オブジェクトの生成・移動処理を作りました。 前回の記事↓ 今回は羊オブジェクトのパラメータを管理するオブジェクトを作っていきます。 羊パラメータの作成 ScriptableObjectの使い方をマスターしよう さて、ち...

コメント

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