Unity コルーチンとカラーでレインボーカラー

派手な演出で使えそうな小技でコルーチンを使い、Imageをレインボーにしてみたいと思います。
非常に簡単に虹色の発光ができますのでゲームで華やかな演出を加えたい時に使ってみて下さい。

ちなみにこの小技を使って作ったゲームはこちらになります。
ゲージが一定まで溜まった時や、クリア時の演出で使ってます。

発光させたいImageを設置

では最初にHierarchyに発光させたいImageを設置しましょう。
RainbowImageとしました。

InspectorからPosX,PosYを0,0にして中央に持ってきておきましょう。

発光処理のスクリプト作成

次に発光の処理をスクリプトに書いて行きます。
RainbowというC#スクリプトを作成し、RainbowImageにアタッチします。

スクリプトの中身も非常にシンプルです。
具体的にはこのようになります。

見ていただければわかるようにやっていることは非常にシンプルです。
コルーチンの中のColor.HSVToRGB(Time.time % 1, 1, 1);について少しだけ触れておきます。

普段色を変える場合はnew Color(値,値,値)としていることが多いと思います。
これはRGBという色の表現法です。
R=赤、G=緑、B=青の3つの色を足したり引いたりして表現しています。

今回はそれとは異なりHSVという表現法を使っています。
H=色相(色を特徴づける色み)、S=彩度(色の鮮やかさ)、V=明度(色の明るさ)となっています。

RainbowImageのInspectorを見てみましょう。
普段Colorを選択するとRGB(A)になっています。

これをHSVに変更してみます。するとこのようになります。

Hの部分に色んな色がありますね。
これを色相スケールと呼ぶそうです。
私は色相に関してはあまり詳しく無いのでリンクを貼っておきます。興味のある方は見てみて下さい。

この値を変化させれば虹色に発光します。
実際にやってみましょう。

RGBの値を使ってレインボーにする場合ですとR,G,Bそれぞれの値を変化させる必要がありますが、HSVですとHの値だけを変化させれば良いので簡単です。

HSVToRGB()関数の引数はH,S,Vと3つあり、それぞれfloatで0から1までの値となります。
Color.HSVToRGB(Time.time % 1, 1, 1)としておくことでHの値を開始からの時間を1で割ったあまりにすることで0から1未満のfloatの値を取得しHの値を変化させ、HSVの値からRGBの色を作成しRainbowImageの色にしています。

詳しくはUnityの公式リンクを載せておきます。

では実際にRainbowスクリプトをアタッチした状態で再生してみましょう。

無事にレインボーカラーになりました。
このまま光らせていてもいいのですが、せっかくならレインボーを止める機能も実装したいと思います。

Buttonを使って発光を止める

発光を止めるにはコルーチンを止めれば良いです。
今回はRainbowImageにButtonコンポーネントを付けてクリックで発光のオンオフを実装してみたいと思います。

Rainbowの中身をこのように変えてました。

コルーチンの止め方は今回はコルーチン型の変数に代入してそれをStopCoroutine()関数で止める方法を使ってみました。
またRainbowImageにはStart時にコードからButtonコンポーネントを追加してクリックに_toggleRainbow()という関数を登録してあります。


このような感じでクリックによって発光のオンオフが切り替えれるようになりました。

なかなか使い所は限られるかもですが、画像を虹色に発光させる方法でした。

Unityの学習方法

Unityを始めプログラミング全般について皆さんは普段どのようにして勉強してますか?

ネットで検索したり、書籍を読んだり、オンラインスクールなど様々な方法があります。

逆にたくさん方法があり過ぎで、どれをやればいいかわからないという方にオススメの方法をいくつか紹介します。

kindle unlimited

これはAmazonが提供する電子書籍読み放題のサービスです。

月額980円で約200万冊以上が読み放題でとてもお得です。

また30日無料体験もできるのが魅力です。

当然Unityに関する書籍もたくさん揃っています。

またC#関連の書籍や、プログラミングのものも多数あります。

プログラミング関連の書籍は値段が結構しますので、それらが無料で読めるのはかなりお得なサービスです。

30日無料体験もありますので気に入らなければその期間に解約すれば料金は発生しません

オンラインで学習

質問が出来るおすすめのUnity学習方法ページです。

・Unityでゲーム作りたいけど何から初めたら良いかわからない。

・独学でゲームを完成させられるか不安。

・ゲーム開発でわからないことを一人で解消できない。

・入門書を一通りやってみたが次に何していいかわからない。

こんな人におすすめしたい内容になっています。

最後までご覧頂いてありがとうございました。

感想・コメントをどうぞ

購読
通知する
guest
0 コメント
Inline Feedbacks
View all comments