簡単なスロットゲームの作り方(2D) 後編

この記事は「簡単なスロットゲームの作り方(2D) 前編」の続きの記事になります

 前編の記事はこちら

 

y9uni.hatenablog.com

 

 

 前回の記事でオブジェクトの配置について説明しました。

 今回の記事では、実際にコードを書いてゲームを完成させていきます。

 

 

 

1.アルゴリズムとか

 今回のスロットゲームのアルゴリズムや手順ついて説明します。

 コードは全部で2つあります。

  • 1つ目はリールの動きを制御する「ReelController」
  • 2つ目はゲーム全体の管理を行う「GameController」

まずは1つ目の「ReelController」のアルゴリズムについて説明します。

①リールの子要素に絵柄を生成する

 リールの子要素にプレハブからランダムに絵柄を生成します(今回は12個)。

f:id:y9fav:20170820004838p:plain

②リールを動かす・止める

 リールを下に移動させ、回転しているように見せます。リールの上端(絵柄の最後)までリールが来た場合、リールを初期位置に戻します。

 また、ストップボタンが押された時には移動速度を大幅に下げ、グリッド位置で停止させます。

③「GameController」に絵柄を送る

ストップボタンが押された時、停止した位置で見えている絵柄を「GameController」に送ります(値送り)。送られた値は絵柄の当選判定(揃ったか判断)に使われます。

 

 

次は2つ目の「GameController」のアルゴリズムについて説明します。

 ①各種ボタンの有効化・無効化を行う

 Playボタンを押したら全部のリールを止めるまで押せなくする等の処理を行います。

 ②当選判定(揃ったか判定)を行う

 3つリールが止まったら、絵柄が揃っているかの判定を行います。揃っていた場合、Logに「〜のラインが揃ったよ。」と通知を行います。

 

以上がコードの説明になります。

細かい説明はコード内コメントをご確認ください。 

2.実際のスクリプト

・「ReelController」

ReelController

 

・「GameController」

SlotGameScript

 

3.ゲームを完成させる

(1)空のGameObject作成し、以下のように設定して下さい。

 (名前を「GameController」、GameController.csをアタッチ)

 

 アタッチしたGameControllerを以下の画像のように設定して下さい。

f:id:y9fav:20170820012316p:plain

 

(2)3つのReelにReelController.csをアタッチして下さい。

 アタッチしたReelControllerの設定は以下の画像のように設定して下さい。

  (Gcは(1)で作成したGameController、ImgObjは前編で作成した絵柄のプレハブ(絵柄のプレハブ数だけSizeの値を調整して下さい)、Speedは任意の正の整数で設定して下さい。)

f:id:y9fav:20170820013101p:plainf:id:y9fav:20170820013112p:plain

f:id:y9fav:20170820013118p:plain

(3)3つのStopButtonのOn Click()にそれぞれ対応するReelをアタッチ(StopButtonLならReel_L)、クリック時の動作をReelController->ReelStop()にします。

3つのStopButton全てでこの設定を行なって下さい。

f:id:y9fav:20170820014439p:plain

 

 

(4) (3)と同じようにPlayButtonのOn Click()にGameControllerオブジェクトをアタッチ、クリック時の動作をPlay()にします。

f:id:y9fav:20170820014849p:plain

 

 

以上で完成です

お疲れ様でした。

 

 

 (8/23追記)この記事の続き「簡単なスロットゲームの作り方(2D) おまけ」を公開しました。

y9uni.hatenablog.com

 

 

コード汚い&わかりにくくてすいません...