【Unity】ブロック崩し(2) ビジュアルとサウンド【クソゲー制作】

ブロック崩しを作る(2)

ブロック崩しの骨組みが完成したので、今回は見た目をいい感じにしていきたいと思います。

環境
  • Mac mini (M1, 2020)
  • Unity 2022.3.36f1
目次

ブロックを光らせる

ブロックがネオンサインのように光っていたらキレイなんじゃないか。ということで、 Shader という機能を使ってみます。完成図はこんな感じです。

ブロック崩し17
STEP

ヒエラルキーで右クリックして「Volume > Global Volume」を選択します。

ブロック崩し18

Global Volumeのインスペクターで「Volume > Profile」「New」をクリックして、プロファイルを作成します。

ブロック崩し19
STEP

Main Cameraのインスペクターで「Camera > RenderingPost Prosessing」にチェックを入れます。

ブロック崩し20
STEP

Global Volumeのインスペクターで「Add Override」から「Bloom」を追加します。このBloomがオブジェクトの表面を発光させるエフェクトです。

ブロック崩し21

Bloomの「Intensity」にチェックを入れ数値を適当に設定します。これは発光の強さを設定するパラメーターです。あとでまた調整することになりそうです。

ブロック崩し22
STEP

Shader Graph を作成します。

Assetsフォルダ下にお好みでサブフォルダを作って、右クリック「Create > Shader Graph > URP > Sprite Unlit Shader Graph」を選択します。

ブロック崩し23

名前を「Bloom」に変更しました。

このBloom (Shader Graph) を右クリックして「Create > Material」を選択すると「Shader Graphs_Bloom」というマテリアルが作成されます。

ブロック崩し24
STEP

Bloom (Shader Graph) をダブルクリックすると以下のような画面が表示されます。

ブロック崩し25

この画面でノードを作成したり接続したりして Shader Graph を作っていくわけですが、正直言って私は自分が何をしているのか全然理解できませんでした。まぁいつか解る日が来るのでしょう。

STEP

まず、プロパティを作成します。

「Bloom」ウインドウの「+」をクリックして「Texture 2D」を選択します。「Texture 2D」というのはプロパティの型です。名前を「MainTex」に変更します。このプロパティの名前は絶対に「MainTex」じゃないとダメっぽいです。

ブロック崩し26

同様に、もう一つ「Color」型のプロパティを作成します。こちらの名前はそのままで。

ブロック崩し27
STEP

ノードを2つ作成します。

適当なところで右クリックして「Create Node」を選択します。

ブロック崩し28

「Create Node」ウインドウが表示されるので「Sample Texture 2D」を検索して見つけてダブルクリックします。ここ、ダブルクリックなんだよなぁ。

ブロック崩し29

同じようにして「Add」というノードも作ります。以下のようになります。

ブロック崩し30
STEP

ノードをつなぎます。

接続するポイントを箇条書きにしますね。

  • MainTex プロパティ → Sample Texture 2D ノードの Texture(T2)
  • Sample Texture 2D ノードの RGBA(4) → Add ノードの A(4)
  • Color プロパティ → Add ノードの B(4)
  • Add ノードの Out(4) → Fragment の Base Color(3)
  • Sample Texture 2D ノードの A(1) → Fragment の Alpha(1)

完成図は以下のようになります。

ブロック崩し31

MainTex(メインのテクスチャ)にColorをAddしてるんだろうなぁということはなんとなく解ります。

STEP

Color プロパティの設定をします。

Color プロパティを選択した状態で、「Graph Inspector」「Mode」「HDR」にします。

ブロック崩し32

最後に左上の「Save Asset」ボタンをクリックします。

ブロック崩し33
STEP

Blockオブジェクトにマテリアルをアタッチします。

Blockのプレハブのインスペクターを開き、「Sprite Renderer > Material」にShader Graphs_Bloomをドラッグ&ドロップしてアタッチします。

ブロック崩し34
STEP

Shader Graphs_Bloomのインスペクターで Color を調整します。

ブロック崩し35

「RGBA」で光の色を設定します。「Intensity」は光の強さです。

STEP

赤だけではつまらないので、6個のマテリアルを作ってそれぞれに色を設定してみました。Shader Graph は1つを使い回しても大丈夫そうです。

ブロック崩し36

ボールの軌跡を表示する

ボールの軌跡を表示したらオシャレなのでは。でもこれって面倒くさそう…と思っていたら意外と簡単に実現できました。Trail Renderer というコンポーネントを使います。もう名前からしてドンピシャじゃないですか。

STEP

Ballオブジェクトのインスペクターで「Add Component」をクリックして「Trail Renderer」を追加します。

ブロック崩し37
STEP

Trail Renderer コンポーネントで「Time」の値を1にします。これは軌跡の寿命を1秒に設定したことになります。次に「Width」のグラフの右下辺りをダブルクリックします。Keyが作成されるので目一杯右下にドラッグします。

ブロック崩し38

左側のKeyは縦軸0.3に設定しました。

縦軸が軌跡の太さ、横軸が時間です。これで、軌跡の太さが0.3で始まって1秒後に0になります。

STEP

この段階でゲームを再生してみるとボールの軌跡がマゼンタ色で表示されます。軌跡の色を変えるためにマテリアルを作ります。Assets/Materialsフォルダで「Create > Material」を選択します。名前は「Trail」にしました。

TrailのインスペクターでShaderを「Alpha Blended Premultiply」に変更します。

ブロック崩し39
STEP

Ballオブジェクトの「Trail Renderer > Mterials > Element 0」にTrailマテリアルをドラッグ&ドロップします。これで軌跡が白くなりました。

ブロック崩し40
STEP

Trailマテリアルのインスペクターで「Particle Texture」「Default-Particle」に変更します。

ブロック崩し41

完成図です。

ボールが跳ね返る音をつける

STEP

音の素材を用意します。pixabayさんからお借りしました。

Assetsフォルダの下にSoundsフォルダを作成して、音声ファイルをインポートします。

STEP

BallオブジェクトのインスペクターでAudio Sourceコンポーネントを追加します。

ブロック崩し43
STEP

スクリプト BallController.cs を修正します。

public class BallController : MonoBehaviour
{
    ... 省略 ...
    public AudioClip audioClip; // 効果音
    private AudioSource audioSource; // AudioSource

    void Start()
    {
        ... 省略 ...
        audioSource = GetComponent<AudioSource>(); // Audio Source コンポーネントを取得
    }

    void Update()
    {
        ... 省略 ...
    }

    void OnCollisionEnter2D(Collision2D collision)
    {
        ... 省略 ...
        audioSource.PlayOneShot(audioClip); // 効果音を鳴らす
    }
}

OnCollisionEnter2D()はオブジェクト同士が衝突したときに呼び出される関数です。Ballオブジェクトが他のオブジェクトと衝突したときにPlayOneShot()で効果音を鳴らしています。

STEP

Assetsフォルダの音源を「Ball Controller (Script) > Audio Clip」にドラッグ&ドロップします。

ブロック崩し44

以上で、ボールが壁やブロック、プレイヤーに当たったときに音が鳴るようになりました。

BGMを鳴らす

STEP

BGMの素材を用意します。LOOPBGMさんからお借りしました。

Assets/Soundsフォルダに音声ファイルをインポートします。

STEP

ヒエラルキーで右クリックして「Audio > Audio Source」を選択します。

ブロック崩し45

Audio Sourceが追加されるので名前を「BGM」に変更しました。

STEP

BGMオブジェクトのインスペクターの「Audio Source > Audio Clip」に音源をドラッグ&ドロップします。また、BGMをループさせたいので「Loop」にチェックを入れます。

ブロック崩し46
STEP

C# スクリプト BGMPlayer.cs を作成してBGMオブジェクトにアタッチします。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BGMPlayer : MonoBehaviour
{
    private AudioSource audioSource; // AudioSource

    void Start()
    {
        audioSource = GetComponent<AudioSource>(); // Audio Source コンポーネントを取得
        audioSource.Play(); // ゲーム開始時にBGMを再生
    }
}

ゲーム開始時にPlay()でBGMを再生しています。

SEを鳴らすときはPlayOneShot()、BGMを鳴らすときはPlay()。テストに出る。

さいごに

Shader Graph の使い方がまだよくわからないですぅ。プログラミングの知識がなくても直感的にシェーダーを作成できるということだけど、プログラミングの知識があっても使いこなせない私は何なんだ。

でも、やりたいことはできたので良かったです。だいぶゲームらしくなってきました。

でわでわ

ブロック崩しを作る(2)

この記事が気に入ったら
いいね または フォローしてね!

シェアしてね

コメント

コメントする

目次