06.パーティクルとギミック作成

1. 味付け

前回までで、このゲームの基本的な仕組みはできたので、今回は味付け的な感じで、プレイ体験をより面白くするために、パーティクルやギミックを追加していきます。

2. パーティクル

ゲームにおけるパーティクルとは、3D空間内に大量の粒子を発生させ、それらに様々な効果を付与することで、水しぶきや紙吹雪などを表現することができるものです。

今回作っていくパーティクルは、ボールがカップに入った時にカップから紙吹雪のように噴き出るようなものです。

こんな感じで、パーティクルを配置します。

そしたら、パーティクルの設定をこんな感じにして、

パーティクルは完成!

でも、このままだとパーティクルが再生されないので、コードを書いていかないといけないです。

なので、このコードをGoalHole.csに追加すればOKです。

    
if(cupInEffect != null)
    {
        cupInEffect.Play();
    }
    

3. ギミック作成

今のままでも十分楽しめるかもしれませんが、より楽しめるものを作るために、ギミックを作成していきます。ギミックにはいろいろ種類がありますが、今回は、歯車を作っていきます。

まずは、簡単に歯車をキューブとシリンダー(円柱)で作ります。こんな感じ。色も付けておく。

次にこれを動かすためのコードを作成します。

“RotatorXY”はXY平面に回転させるスクリプト、”RotatorXZ”はXZ平面に回転させるスクリプトです。縦方向の歯車だけでも良かったのですが、コードもほとんど一緒なので、ついでに横方向に回転する歯車も作っておきましょう。

このコードをスクリプトに書きます。

XY平面(縦方向)


using UnityEngine;

public class RotatorXY : MonoBehaviour
{
    [SerializeField] private float rotationSpeed = 90f;
    [SerializeField] private bool isReverse = false;

    private void Update()
    {
        if (isReverse)
        {
            transform.Rotate(0, 0, rotationSpeed * Time.deltaTime);
        }
        else
        {
            transform.Rotate(0, 0, -rotationSpeed * Time.deltaTime);
        }
        
    }
}

XZ平面(縦方向)


using UnityEngine;

public class RotatorXZ : MonoBehaviour
{
    [SerializeField] private float rotationSpeed = 90f;
    [SerializeField] private bool isReverse = false;
    private void Update()
    {
        if (isReverse)
        {
            transform.Rotate(0, rotationSpeed * Time.deltaTime, 0);
        }
        else
        {
            transform.Rotate(0, -rotationSpeed * Time.deltaTime, 0);
        }
        
    }
}

これで動くようになりました!

いい感じですね。パーティクルと歯車がしっかりと実装できてます。書き忘れましたが、歯車は逆回転できるようにしています。どっちが逆回転かわかりませんが。

4. まとめ 

今回はパーティクルとギミックを作成しました。次回は、多分ステージ切り替えとかを作ると思います。たぶん。