今回、Unity初心者でありますが、暇つぶしに最適なソリティアを制作したので紹介します。
制作方法を簡単に解説しますので、私と同じぐらいのUnity初心者の方は参考になるかなと思います。
Google Playにも登録出来たので、興味がある人は是非ダウンロードして遊んでみて下さい。
ただし、オリジナリティはゼロであることを始めに言っておきます。
この記事はこんな人におすすめ!
- Unity初心者の人
- Unityでカードゲームを作ってみたい人
まずはソリティアを遊んでみよう!
今回、制作したソリティアをWebGL版にしたので遊んでみて下さい。
新しくページを開く場合はこちら。
Google Playにも登録していますので、Androidユーザーの人は下記リンク先からインストールしてみて下さい。
iOS版は無いのでご了承ください。
制作方法のポイント
ソリティア制作方法のポイントを解説していきます。
解説するにあたり、山札、組札、場札という用語が出てきますが、下図の定義とします。
カードPrefabを準備する
カードスプライトの作成
カードの画像を用意して、スプライトエディタで52枚のカード + 裏面に分割し、スプライトを作成します。
①Texture TypeをSprite(2D and UI)に変更。②Sprite ModeをMultipleに変更。③Sprite Editorをクリック。
Sprite Editorで52枚のカード表面とカード裏面に分割し、スプライトを作成。
カードPrefabを作成
カードPrefabは、52枚のカードをすべて作成するのではなく、カード裏面のみを作成します。
カードを表面にするときは、スプライトを差し替えるようにします。
カード状態を設定する
52枚のカードがそれぞれどんな状態にあるか記憶するため、スクリプトを追加し、変数を設定します。
カード状態
- cardPosX, cardPosY: カードの位置 (山札、組札、場札のどこの位置に置かれているか)
- mark: マーク(ハート、ダイヤ、クローバー、スペード)
- num: 数字(1~13)
- frFlg: 表裏の状態
- layer: カードが置かれている高さ
カードクリック時の処理を追加
カードPrefabにEvent Triggerコンポーネントを追加して、カードをクリックしたときの処理を追加します。
Event Triggerの設定方法は、別記事で解説していますので、こちらを参照下さい。
カードの上でマウスボタンを押したときの処理 (OnClickCard)
山札の上でマウスボタンを押した時
カードを3枚めくります。
場札の上でマウスボタンを押した時
一番上のカードかつ裏であれば表にします。
カードをマウスドラッグしたときの処理 (OnDragCard)
表のカードをマウスドラッグした時
マウスクリック前の位置を記憶した後、下に繋がっているカードすべてを移動させます。
マウスボタンを離したときの処理 (UpClickCard)
マウスボタンを離した場所が場札かつ、移動中のカードとマーク色違いで数字が1つ大きいカードの上の場合
移動中のカードを、マウスボタンを離した場所に移動完了させます。
マウスボタンを離した場所がカードが1枚もない場札列かつ、移動中のカードが「K」の場合
移動中のカードを、マウスボタンを離した場札列に移動完了させます。
マウスボタンを離した場所が組札かつ、移動中のカードとマークが同じで数字が1つ小さいカードの場合
移動中のカードを、マウスボタンを離した場所に移動完了させます。
ゲーム開始したときの処理を追加
- 52枚のカードを山札に裏返して置く
- 52枚のカードをシャッフルして山札に置き直す
- 28枚のカードを場札に並べる
グラフィック・ユーザーインターフェイスの作成
- タイトル画面を作成し、ゲーム画面に移行する処理を作成する
- リセットボタンを作成し、ボタンを押したらゲームをやり直す処理を作成する
- やり直しボタンを作成し、ボタンを押したら1回操作を戻す処理を作成する
- ゲーム開始からの時間表示を作成する
- 操作回数の表示を作成する
- ゲームクリアしたときのアニメーションを作成する
まとめ
以上、私がUnityで制作したソリティアの紹介でした。
オリジナリティはゼロですが、ソリティアとしては立派に完成させていますので、暇つぶしにはなると思います。私も電車で移動中などは、自分で作ったソリティアで遊んでいます。
Google Playにも登録出来たので、興味がある人は是非ダウンロードして遊んでみて下さい。