原カバンは鞄のお店ではありません。

Unityを使ったゲーム制作のあれこれを綴っていきます。

【Unity】スクリプトでHSVを指定してMaterialの色を変える

「W.T.」ふりーむ!版

休日のゲーム開発ははかどらないのに本業のリモートワーク中のゲーム開発は進捗が進む皆さんこんにちは。先日もそんな感じでふりーむ!に投稿するためのブラッシュアップ作業を行い、大体完了することができました。
後はセーブ機能に関する諸問題を解決するだけなのですが、解決できなかった場合でもセーブ機能なしで投稿すると思います。長くても30~40分程度の作品なので。
なので、3/10を目途にふりーむ!へ投稿しようと思っていますが、ふりーむ!は作品投稿後に審査があるようなので、実際にサイトに並ぶのは来週ぐらいになるでしょうか。
その時はTwitter等で告知しようと思います。

youtu.be

IGC2023落選

出展を応募していたIndie Games Connect 2023ですが、抽選の結果、残念ながら落選したようです。

www.konami.com

近々でユーザの方に直接自作ゲームをお披露目する機会がなくなったのは非常に残念ですが、落ち込んでもいられないので、次はオンラインイベントのIndie Live Expo 2023の出展を応募しようと思います。

indie.live-expo.games

こちらは番組中に15秒のスポットを流してもらう形になります。長時間イベント中の15秒なのであまり目立たないかもしれませんが、少しでもアピールする機会を頂けるのは大変ありがたい事だと思います。

番組は5/20,21らしいのでそれまでにはSteamにアーリーアクセス版がリリース出来ているよう頑張ります。

 

「ついてこれる奴だけついてこいッ!」なゲーム

「化勁」「不屈」「氣勢」「絶脈」このワードだけを聞いてそれぞれがアクションゲームの中でどんな役割を示しているのか想像できる方はいるでしょうか?古代中国三国志が舞台のゲームとはいえ、"パルスのファルシのルシがパージでコクーン"並みにユーザ側に理解努力を求めるゲームそれが「Wo Long Fallen Dynasty」だと言えます。

「NINJA GAIDEN」「仁王」シリーズを開発したTeam NINJAのゲームらしく、軽快で爽快感の高いハイスピードな高難易度アクションが楽しめます。各レビューサイトで散々言われているでしょうが、SEKIROの剣戟アクションに強く影響を受けており、本作ではSEKIROの「弾き」に似た回避アクション「化勁」を駆使することがゲーム攻略のカギになります。

こうした高難易度な「死にゲー」と呼ばれるジャンルは、ユーザ側がトライ&エラーを繰り返し強敵に対する攻略法を試行錯誤したり、ゲーム操作を上達させて達成感を楽しむゲームだと思いますが、「Wo Long Fallen Dynasty」の場合、"攻略法を試行錯誤する"という部分をバッサリ削って、"ゲーム操作を上達させる事"だけにフォーカスされたゲームバランスとなっています。
この為『"化勁"というアクションを上手く使いこなす』という事だけが難敵を突破する唯一の攻略法で、ハスクラ要素や魔法のような「仙術」、同行NPCもただの「色付け」としての存在にとどまり、ユーザが試行錯誤する幅が極端に狭いゲームとなっています。

その代わり"化勁"を上手く使えるようになると、それを起点に"氣勢"というゲージに注意を払えるようになり、"絶脈"や"武技"といった必殺技を駆使して強ボスでも華麗な戦いを演じられるようになって、以後のゲームプレイが非常に楽しくなります。
これは開発者側が「ついてこれる奴だけついてこいッ!」と宣言して「その代わりついてきたやつは十分に楽しませてやる!」という意気込みで作り上げられたゲームだと言ってよいでしょう。
"化勁により氣勢を溜め絶脈を発動、攻略には士気と不屈を上げて・・・"を楽しむ覚悟のある方は購入をお勧めします。

teamninja-studio.com

 

RGBとHSV

色を数値で表す場合、主に光の三原色RGBを使って表現することが多いと思いますが、ゲーム画面のデザインを考える場合は、色相(Hue)、彩度(Saturation)、明度(Value)で表される値を使った方が便利です。

これは同じ色合いを並べて統一感のある画面でも輝度、明度を変えると画面に奥行をだしたり、季節感を表現することが簡単になり、よりおしゃれな画面を作るとができます。ここら辺の下りについては、以前このブログでも記事にしています。

www.karvan1230.com

UnityのエディタではカラーピッカーのRBGの指定をHSVに変えると指定した色のHSV値を確認して変更することができます。

ゲーム制作時にMaterialを作成するときはこのカラーピッカーを使ってHSV値を変えて色を指定することができますが、ゲーム実行中にMaterialの色を変更したい場合、Materialに設定するColorクラスにはRBGしか扱えないため、彩度や明度を動的にスライドして変えたい場合はちょっとした工夫が必要になります。

 

RGBとHSVの変換

RGBとHSVとの値の変換は「各要素を足して3で割る」といった単純な処理ではないのですが、幸いにUnityEngine.Colorにはそれ用の変換メソッドが用意されています。

docs.unity3d.com

docs.unity3d.com上のリファレンスを読めばわかりますがHSVToRGBは戻り値がColorクラスとなっている為、戻り値をそのままMaterialのColorとして設定可能です。逆にRGBToHSVは戻り値はなく、H,S,Vの値をそれぞれ引数として渡す必要があります。

また、通常HSVの値は

  • H(色相):0~360
  • S(彩度):0~100
  • V(明度):0~100

上記のような範囲で指定しますが、HSVToRGBで指定する値、RGBToHSVで戻ってくる値は0~1の為、値を表示したり、画面から入力して指定する場合には考慮が必要です。

 

スライダを使って動的に変える

試しに画面上にHSVそれぞれの値を示すスライダを設置して、それを変更することでマテリアルの色を変更するようにします。
折角なら同じマテリアルを使用するオブジェクトすべての色を変更したいので、SharedMaterialの色を変更するようにします。
因みにSharedMaterialのColorを変更した場合、デバッグモードが終了しても変更した値がそのまま残るので注意が必要です。

 

    public Slider H, S, V;

    void Update () {
        GetComponent<MeshRenderer>().sharedMaterial.color = 
            UnityEngine.Color.HSVToRGB (H.value, S.value, V.value);
    }

 

最初にH(色相)を変えてみます。

 

次にS(彩度)

 

そしてV(明度)

HSVそれぞれのスライダーを調整することでオブジェクトの色合いに変化を付けることができました。

◇プライバシーポリシー

●個人情報の利用目的

当ブログでは、メールでのお問い合わせ、メールマガジンへの登録などの際に、名前(ハンドルネーム)、メールアドレス等の個人情報をご登録いただく場合がございます。

これらの個人情報は質問に対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、個人情報をご提供いただく際の目的以外では利用いたしません。

●個人情報の第三者への開示

当サイトでは、個人情報は適切に管理し、以下に該当する場合を除いて第三者に開示することはありません。

・本人のご了解がある場合
・法令等への協力のため、開示が必要となる場合

個人情報の開示、訂正、追加、削除、利用停止
ご本人からの個人データの開示、訂正、追加、削除、利用停止のご希望の場合には、ご本人であることを確認させていただいた上、速やかに対応させていただきます。

アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。

このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。

●免責事項

当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。

当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤情報が入り込んだり、情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

●プライバシーポリシーの変更について

当サイトは、個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直しその改善に努めます。

修正された最新のプライバシーポリシーは常に本ページにて開示されます。