CG・映像デザイナー技術ブログ

【Unity】パーティクルでテキストを発生させる方法

0


Shurikenでテキストを発生してみました。

レンダーテクスチャを使ってます。
またテキストが変更されるとパーティクルのテキストも更新されます。

th=”500″ height=”361″ class=”alignnone size-full wp-image-9436″ />

この記事の著者
CGブロガー すいみん

CGブロガー

すいみん

Suimin

プロフィール

某美大の油絵科を卒業後、大手CG映像プロダクションに入社。
その後ゲーム業界に転職。
現在は技術系のCGデザイナーをしています。 書籍:Unity デザイナーズ・バイブル
プロフィール詳細はこちら

マテリアルのAssetを用意

  1. Asset Create > New Render Texture(名前はText Render)
  2. Asset Create > Material(名前はText Material)
  3. Text Materialを選択して、Mobile > Particle > Additiveに変更
  4. Text Materialを選択して、TextureにText Renderをアサイン

パーティクルのSceneの作成

  1. Main Cameraを選択して、Clear Flags > Solid Color(色は黒)
  2. Main Cameraを選択して、Ctrl+Dでカメラ(Text Camera)を複製。
  3. Text Cameraを選択して、Projection > Othographicに変更。
  4. Text Cameraを選択して、Target Textureにレンダーテクスチャ(Text Renderer)を設定
  5. Canvasを選択を選択して、Screen Space -Cameraに変更。
  6. Canvasを選択を選択して、Render CameraをText Cameraに変更。
  7. GameObject > UI > Textから文字を入力(Wow!)※Text Cameraの表示内に収める
  8. GameObject > Particle Systemを作成。
  9. Particle Systemを選択して、Render > Material > Text Materialに設定

あとはお好みでパーティクルを調整。

ちなみに数字のカウントダウンは下記のコードをテキストにアタッチ

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class TimeScript : MonoBehaviour {
private float time = 10;
void Start () {
GetComponent<Text>().text = ((int)time).ToString();
}
void Update (){
time -= Time.deltaTime;
if (time < 0) time = 0;
GetComponent<Text> ().text = ((int)time).ToString ();
}
}

参考

[おまけ]パーティクルの描画が毎フレーム残り続けてしまう場合の解消方法

パーティクルの描画が毎フレーム残り続けてしまうことが起きたのですが、

ちょっとしたカメラの設定が原因でした。

パーティクルが毎フレームの描画が残り続けてしまう場合の原因

カメラの設定がcamra > Clear Flags > Don’t Clearの場合、パーティクルの各フレームの描画が次のフレーム上に描画されてしまうようです。

真っ黒になるからと言って、よくわからない設定しまうと正しい描画の結果になりません。

ということで、背景を黒くしたい時はSolid Colorを推奨します。

参考

カメラ – Unity マニュアル

以上、すいみん(@cg_method)でした!

0