同人ゲームサークル reverse snare 開発ブログ

主に2DSTGを作ってる同人ゲームサークル reverse snareの開発記、イベント・作品宣伝を行うブログです。

Unity LineRendererでレーザー各種作成

Unity LineRenderer完全に理解した

linerendererでレーザー各種を作成

unityのLineRendererで簡単に画像の変形描画ができます。

parumu.jpg

むしふたパルム的なレーザー。ベジエ曲線でなんやかんや

DDPLaser.jpg

DDP

chaselaser.jpg

基本的な追尾レーザー

・どう使うの

1.オブジェクトにLineRendererコンポーネントをつける

2.LineRendererのPositionの使用数を関節数分設定する

(曲がる線を描きたいなら多めに、一直線なら2)

lr.png

3.描画に使う画像をプロジェクトに取り込む。

 マテリアルを作成し、マテリアルに描画に使う画像を割り当てる。

 

4.初期化処理

 LineRendererとそのマテリアルを受け取る。

 レーザーの軌跡など、関節数分の座標履歴を持つ。

LineRenderer lr;

Material material;

Vector3[] history;

public ChaseLaser(GameObject gameObject, int taleCnt) : base(gameObject) {

history = new Vector3[taleCnt];

for (int i = 0; i < history.Length; i++) {

history[i] = Vector3.zero;

}

lr = gameObject.GetComponent<LineRenderer>();

material = lr.material;

}

5.ゲーム動作処理

 移動で座標履歴を更新するとか、衝突でレーザー短くするとか。

6.描画処理

 関節座標を描画に反映させる

for (int i = 0; i < history.Length; i++) {

lr.SetPosition(i, history[i]);

}

 画像スクロールを行う場合はマテリアルのOffset(material.mainTextureOffset)を変更する

 (1.0fで画像一枚分動くので、ゲームの座標単位から変換する必要がある)

 

DDPレーザーみたいにスクロールするもので、長さによって画像が伸び縮みすると違和感がある場合は、

 最長の長さを定義しておいて、現在の長さの割合をmaterial.mainTextureScaleに設定する。

 (最長なら1、半分なら0.5)これで引き伸ばし感が長さに影響されない

ベジエ曲線のレーザーの描画のシワがちょっと気になる。

かなり基本的な使い方しかしてないので理解したなど到底言えないですね