コガネブログ

平日更新を目標にUnityやC#、Visual Studioなどのゲーム開発アレコレを書いていきます

【Unity】自由自在に伸び縮みするネオングリッドを使用できる「Vector Grid」紹介($16.20)

f:id:baba_s:20171204095111p:plain

概要

2014/1/27 に「Vector Grid」がリリースされました

「Vector Grid」を導入すると、
自由自在に伸び縮みするネオングリッドを使用できるようになります

検証環境

  • Unity 2017.1.1f1
  • Vector Grid 1.134

デモ

サンプル動画

クイックスタート

f:id:baba_s:20171204104509p:plain

Unity メニューの「GameObject>Create Other>Vector Grid>Vector Grid」 を選択して
「Vector Grid」オブジェクトを作成します

f:id:baba_s:20171204104518p:plain

「Vector Grid」オブジェクトの Inspector を表示して
Project ビューの「GridMaterial」を「Materials」の「Element 0」に設定します

f:id:baba_s:20171204105231p:plain

もしも「Vector Grid」オブジェクトが小さすぎる場合は
「Grid Scale」に適当な値を設定して大きくします

その後、「Example.cs」という名前のスクリプトを作成して
下記のソースコードを貼り付けます

using UnityEngine;

public class Example : MonoBehaviour
{
    public VectorGrid m_vectorGrid;
    public float m_explosiveForce = 10;
    public float m_forceRadius = 1;

    private void Update()
    {
        var screenRay = Camera.main.ScreenPointToRay( Input.mousePosition );
        var worldPosition = screenRay.GetPoint( m_vectorGrid.transform.position.z - Camera.main.transform.position.z );
        worldPosition.z = m_vectorGrid.transform.position.z;
        m_vectorGrid.AddGridForce( worldPosition, m_explosiveForce * 0.1f, m_forceRadius, Color.white, true );
    }
}

f:id:baba_s:20171204105355p:plain

そして、空のゲームオブジェクトを作成して
上記の「Example」コンポーネントをアタッチします

f:id:baba_s:20171204105614p:plain

最後に、「Example」コンポーネントの「Vector Grid」に
「Vector Grid」オブジェクトを設定してゲームを実行します

これで、マウスカーソルをグリッドに重ねると
グリッドが伸び縮みするようになりました

f:id:baba_s:20171204105927p:plain

「Example」コンポーネントの「Explosive Force」が与える力、
「Force Radius」が力を与える範囲にないっているので
これらを調整すると挙動を変更することができます

補足

// グリッドに力を与える
m_vectorGrid.AddGridForce
(
    worldPosition,  // 力を与える位置(ワールド座標)
    force,          // 与える力の量
    radius,         // 力を与える範囲
    color,          // 与える色
    hasColor        // 色を与えるかどうか
);

// グリッドの状態を元に戻す
m_vectorGrid.Reset();

「Vector Grid」では基本的に上記の関数を使用します