白黒羊

白黒羊

白黒羊

  • Home
  • Products
  • News
  • Support
  • Contact

SHIROKUROHITSUJI

Unityで花札アプリを作るメモ #01 キラカードシェーダーを使う

2018年8月19日Unity By: shimahinuko

先日の記事に書いたように花札にどっぷりハマったこともありUnityを使って花札のゲームを作ってみることにしました。 

夏の間に(たぶん)企業のインターンシップで機械学習を勉強するはずなので、最終的には強い強い花札ゲームにしたいのですが、運やルールの影響が強めのゲームなのでどうなるのかはわかりません。役の配点がものによって違うし役自体も何を採用するかの基本的なルールが無さそうなので……。

花札と機械学習について研究している研究者の人たち、情報処理学会の人たちで1組だけ最近の論文を出しているのを見つけたけどあまり流行ってないのかな。

花札の素材を48枚作る

初っ端から完全に他人の褌なのですが最高のシェーダーなので書いておきます。

というわけでキラカードシェーダーのunitypackageだよ(・ω・)つ
色々弄ってみて貰えれば分かるような気もするけど金曜にUnityJPで軽く使い方とかマップ作製のコツ的な配信するので暇あったらきてみてちょ(後でちゃんと案内出しま)https://t.co/fPweuJeNGm#unity3d #unitychan pic.twitter.com/RanGeSjqAo

— ntny (@nD_ntny) June 28, 2018

実際のところ今回分はこのシェーダーのおすすめ記事です。

これでこんな感じのキラカードを12ヶ月×4種用意します。

グラデーションだけオンにしてキラもホロも切っているのでわりと普通の花札たち。むしろ暗い。

hanafuda

手札、相手札、場札を並べる

続いて作った札を並べます。
山札の中からランダムに札を選んでいき、初めの4枚→親、次の4枚→子、その次の4枚→場、その次の4枚→親、その次の4枚→子、その次の4枚→場となるように計24枚を配ります。花札は全体で48枚なのでこの時点で半分を使うことになるんですね。

並べたときにはじめてDoTween使いました。
ゲームオブジェクトの移動がすごく便利!
もっと早く使っておけば良かったです。

最初はiTweenを使っていましたが違いもよくわからないまま時代遅れだとかいうのを聞いて鵜呑みにしてDoTweenにかえました。

hanafuda_start

並べる順番とか書いてたくせに終了待ちが難しかったので同時です。
同時でも良いかもという気がしているので、ここは余力があれば直しますがこのままかも。

場札と同じ月の札が手札にあるときに光らせる

なぜ最初にキラキラさせなかったのかというとこれをしたかったからです。

でこの辺を調べたのですがよくわからず(今度使うようにメモ残しておく)、

スクリプトからこのようにemissionをtrue。

Unity5のStandardシェーダのパラメタをスクリプトからいじろうとして丸一日潰れた話 – D.N.A.のおぼえがき

それからPost Processing Stackのbloom機能を適用。

[Unity] Post Processing Stackを使ってUI要素にもBloomを適応する
Post Processing Stack(ポストプロセッシングスタック)でワンランク上のビジュアル表現 Unityインターハイブログ

最新版はv2みたい

Post Processing Stack(v2) | Planet Factory

void Update()
{
    sumTime += Time.deltaTime;
}
public void Bloom(GameObject hanafuda)  // hanafudaを光らせる
{
    material = hanafuda.GetComponent<Renderer>().material;
    // 外枠を中心に明るさを変化させる
    material.SetFloat("_FrameMetal", Mathf.PingPong(sumTime / 2.0f, 1.0f));
    // キラを回す
    material.SetFloat("_KiraAngle", Mathf.Repeat(sumTime / 2.0f, 2.0f));
    // ホロを明るくする
    material.SetFloat("_HoloBrightness", 2.0f); 
}

というわけで前述のキラカードシェーダーのキラとホロを動かしたりキラキラさせることで良い感じにすることにしました。

みたいな関数を作って、

        for (int i = 0; i < MyHanafuda.Count; i++)
        {
            for (int j = 0; j < FieldHanafuda.Count; j++)
            {
                if (Month(MyHanafuda[i]) == Month(FieldHanafuda[j]))
                    // 自分の手札と場の手札に同じ月のものがあれば
                {
                    Bloom(MyHanafuda[i]);
                }
            }
        }

みたいな条件を満たしたものに適用するみたいな感じ!
キラカードシェーダーに限らず、任意のシェーダーの中身見て出てくるパラメータをグリグリいじると楽しくなれます。
明るさを暗い0→普通0.5→明るい1→普通0.5→暗い0→普通0.5→……とするなら、

Mathf.PingPong()

を使い、

https://docs.unity3d.com/jp/current/ScriptReference/Mathf.PingPong.html

ぐるぐる回すなら0°→90°→180°→270°→0°→90°……とできる

 Mathf.Repeat()

を使います。便利!

https://docs.unity3d.com/ja/current/ScriptReference/Mathf.Repeat.html

場札に同じ月の札がある手札がキラキラしました!
きれい!

次回は場札と手札をクリックできるようにして、場合分けとか札の移動を考えたいと思います。
もしくは忘れないうちにAdobeXD使って、UIを良い感じにするか!
場札がキツキツになるときとか(理論上は12枚場札になり得るよね?)特に、どこが空いているのかの場合分けとかが面倒そうな気がする。

Share:
adobe_xd_drag_and_drop_resized

Previous

Adobe XDでドラッグアンドドロップができないときのためのメモ

Next

OpenFOAMを使ったときのメモ

Leave a Comment コメントをキャンセル

カテゴリー

  • CFD (9)
    • OpenFOAM (9)
  • Design (5)
    • Adobe_XD (1)
    • Font (3)
    • Photoshop (2)
  • Diary (2)
  • Event (9)
    • AdventCalendar (3)
    • unity1week (6)
  • Git (2)
    • GitLab (1)
  • Programming (6)
    • C# (2)
      • Rider (1)
    • C++ (2)
    • javascript (2)
  • Unity (18)
    • Editor拡張 (1)
    • UniTask (1)
    • UnityAsset (8)
    • UnityCloudBuild (2)
    • WebGL (2)
  • ゲーム (2)
    • 冠を持つ神の手 (2)
  • 機械学習 (1)
  • 開発 (15)
    • Admob (1)
    • Android (2)
    • Database (1)
      • MySQL (1)
    • DiscordAPI (2)
    • iOS (2)
    • PlayFab (1)
    • Web (2)
      • AmazonS3 (2)
      • Heroku (1)
      • RestAPI (1)
      • WordPress (1)
    • 虹の降る海 (4)
    • 設計 (1)
2018年8月
日 月 火 水 木 金 土
 1234
567891011
12131415161718
19202122232425
262728293031  
« 7月   9月 »

アーカイブ

  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年7月
  • 2020年5月
  • 2020年1月
  • 2019年12月
  • 2019年11月
  • 2019年10月
  • 2019年8月
  • 2019年7月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年2月
  • 2018年11月
  • 2018年9月
  • 2018年8月
  • 2018年7月

カテゴリー

  • Admob
  • Adobe_XD
  • AdventCalendar
  • AmazonS3
  • Android
  • C#
  • C++
  • CFD
  • Database
  • Design
  • Diary
  • DiscordAPI
  • Editor拡張
  • Event
  • Font
  • Git
  • GitLab
  • Heroku
  • iOS
  • javascript
  • MySQL
  • OpenFOAM
  • Photoshop
  • PlayFab
  • RestAPI
  • Rider
  • UniTask
  • Unity
  • unity1week
  • UnityAsset
  • UnityCloudBuild
  • Web
  • WebGL
  • WordPress
  • 冠を持つ神の手
  • 機械学習
  • 虹の降る海
  • 設計
  • 開発

メタ情報

  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org