【Unity】標準より綺麗になるトレイルアセットAra Trails

#はじめに
「[Ara Trails](https://www.assetstore.unity3d.com/#!/content/102638?aid=1100l3oC8)」とは
<img width="1008" alt="Ara_Trails_-_Asset_Store.png" src="https://qiita-image-store.s3.amazonaws.com/0/158441/9c1640ff-b58b-e4b1-5b01-9798d40ea584.png">

>Araはパーティクルシステムのコンセプトを借用して歩道を過充電する高度なトレイルレンダラーです。

>使いやすく、非常に柔軟でカスタマイズ可能です。 UnityのデフォルトトレイルレンダラーをAraに置き換えると、決して振り返らないでしょう。 （すべてのプラットフォームで動作）

>一般的な使用例をカバーするために、基本的なAraトレイルレンダラの上に構築された追加のユーティリティコンポーネントが含まれています。

>-TireTracks：タイヤ＆スキッドマークを簡単に作成できます。
-ElectricArc：手続き型電気アークを作成します。
-ColorFromSpeed：スピードに基づいてトレイルの色を変更します。
特徴：

>- スプラインベースのトレイルスムージング。動きの速いオブジェクトは、最終的にスムーズなバタフライの軌跡を残します。

>- 高品質のラインコーナーの取り扱い：鋭い、鈍いまたは丸い。

>- 単一のオン/オフトグルを使用してトレイルエミッションを有効/無効にする機能。トレイルレンダラーのプールを使用する必要はなく、実行時にコンポーネントを作成/破棄するなどの厄介な解決策は必要ありません。

>- 時間と長さに基づいた色と厚さ。時間または長さベースのアプローチを個別に使用するか、それらを組み合わせることができます。

>- 世界と地域の空間生成。

>- ビューと（アーティファクトフリー）ローカルトレイルアラインメント。武器の道、ライトサイクルの道に最適です...

>- 物理：重力、慣性、ダンピング...あなたの軌跡を生かす！

>- 複数のテクスチャモード：ストレッチ、タイル、アンカー...

>- スクリプトによるトレイルポイントへの直接アクセス：既存のトレイルポイントを変更したり、新しいトレイルポイントを追加したり、自分自身でトレイルポイント全体を削除または置き換えたりすることができます。個々のポイントには、位置、方向、速度、色、厚さ、連続性、寿命情報が含まれています。

>- Excepcionalパフォーマンス。フレームごとに割り振られたゼロメモリ=ガベージコレクションなし。

>- うまく構造化された、きれいで完全にコメントされたC＃ソースが含まれています。

>- いくつかの出荷されたプロジェクトで戦闘がテストされました。

![Sep-09-2018 15-47-32.gif](https://qiita-image-store.s3.amazonaws.com/0/158441/d54d0ffb-cb1c-290e-e5c0-31f633ab044e.gif)
![Sep-09-2018 15-48-11.gif](https://qiita-image-store.s3.amazonaws.com/0/158441/3a53c476-e541-a882-a42b-43d3d409ab86.gif)
![Sep-09-2018 15-48-42.gif](https://qiita-image-store.s3.amazonaws.com/0/158441/de9e5dc9-d09e-ba12-0284-c72ebc33797d.gif)
![Sep-09-2018 15-49-03.gif](https://qiita-image-store.s3.amazonaws.com/0/158441/f61e6773-7bb2-694b-2918-2e748986334b.gif)
![Sep-09-2018 15-49-19.gif](https://qiita-image-store.s3.amazonaws.com/0/158441/14ba621d-8ddb-f90f-eec3-0a67b015c940.gif)
![Sep-09-2018 15-49-54.gif](https://qiita-image-store.s3.amazonaws.com/0/158441/26880c7a-a33c-b729-21cc-95ead9f86bfb.gif)

#動作環境
Mac 10.13.6
Unity 2018.2.5f1
Animated GIF Player 1.13.4

#使い方 剣筋的なものをつける場合
アセットをインポートしてきたら、ターゲットになるオブジェクトに「AraTrail」コンポーネントを付与し、トレイルのマテリアルがないのでアタッチする　
<img width="334" alt="Unity_2018_2_5f1_Personal__64bit__-_SampleScene_unity_-_New_Unity_Project__2__-_PC__Mac___Linux_Standalone__Personal___Metal_.png" src="https://qiita-image-store.s3.amazonaws.com/0/158441/c53d0e01-47d7-3f7f-8ce2-428b6db7aaa8.png">
シェーダーは特に専用のシェーダーはなく標準のシェーダーでもいいっぽいです
基本これで動くのですが、このままだと小さすぎたりするので、
サイズ調整をします。
調整する為には、「Thickness」をいじると調整できます
<img width="325" alt="Unity_2018_2_5f1_Personal__64bit__-_SampleScene_unity_-_New_Unity_Project__2__-_PC__Mac___Linux_Standalone__Personal___Metal_.png" src="https://qiita-image-store.s3.amazonaws.com/0/158441/2bdda84f-20be-0073-3446-b54864e49fd3.png">
一つサイズ調整の注意としては、「AraTrail」コンポーネントの付与しているオブジェクトの中心軸からスケールを行うので、剣みたいなオブジェクトに付与したい場合は剣の中心にあるゲームオブジェクトに付与しましょう　特に空のゲームオブジェクトでも大丈夫そうです
<img width="377" alt="スクリーンショット_2018-09-09_17_29_10.png" src="https://qiita-image-store.s3.amazonaws.com/0/158441/9cafbf78-62b7-d543-ce53-2234425fda62.png">

結果こんな感じでできます
![Sep-09-2018 17-22-28.gif](https://qiita-image-store.s3.amazonaws.com/0/158441/f489b451-204a-9816-e1de-a56baba49031.gif)

#AraTrailパラメーター

##Overall
<img width="330" alt="Unity_2018_2_5f1_Personal__64bit__-_SampleScene_unity_-_New_Unity_Project__2__-_PC__Mac___Linux_Standalone__Personal___Metal_.png" src="https://qiita-image-store.s3.amazonaws.com/0/158441/e1f35e67-9178-5555-9c4a-96d12d09119a.png">

| 項目 | 内容 |
|:-----------|:-----------|
| Space|  トレイルを生成してシミュレートするために、ワールド空間またはローカル空間を使用するかどうか
|  TimeScale |  定期的な時間を使用するかどうか| 
| Alignment|  トレイルのジオメトリを整列する方法：カメラの向きに合わせて（トランスフォームの回転（ローカル）を使用する）|
| Thickness  | 厚さ乗数（メートル単位） |
| smoothness  |  トレイル形状に適用されたスムージング反復の量|
| highQualityCorners |  急なコーナーでの正確な厚さの計算|
| cornerRoundness  |  鋭いコーナーの場合は0、丸いコーナーの場合は1、丸いコーナーの場合は1を超える値に設定します。|

##Lenght
<img width="325" alt="Unity_2018_2_5f1_Personal__64bit__-_SampleScene_unity_-_New_Unity_Project__2__-_PC__Mac___Linux_Standalone__Personal___Metal_.png" src="https://qiita-image-store.s3.amazonaws.com/0/158441/35b5c6a5-4eb0-7e99-999a-88c73dc93936.png">

| 項目 | 内容 |
|:-----------|:-----------|
| thicknessOverLenght| カーブの太さ
|  colorOverLenght |  頂点の色| 


##Time
<img width="321" alt="Unity_2018_2_5f1_Personal__64bit__-_SampleScene_unity_-_New_Unity_Project__2__-_PC__Mac___Linux_Standalone__Personal___Metal_.png" src="https://qiita-image-store.s3.amazonaws.com/0/158441/d624d81f-ee45-e70e-ad53-251b6d398a15.png">

| 項目 | 内容 |
|:-----------|:-----------|
| thicknessOverLenght| 時間経過に伴うトレイルの厚さの変化
|  colorOverLenght |  時間経過に伴う頂点の色の変化| 

##Emmition
<img width="321" alt="Unity_2018_2_5f1_Personal__64bit__-_SampleScene_unity_-_New_Unity_Project__2__-_PC__Mac___Linux_Standalone__Personal___Metal_.png" src="https://qiita-image-store.s3.amazonaws.com/0/158441/4eb457b5-1e0d-9163-166c-ddd4a09a039c.png">

| 項目 | 内容 |
|:-----------|:-----------|
|　　Emit| 描画するか
|  initialThickness |  最初の厚さ| 
|　initialColor| 最初の色
|  initialVelocity |  最初の速度| 
|  timeInterval |  新しいトレイルを作成されるまでの時間（秒単位）| 
|　minDistance| 放出された点の間に維持されるべき最小距離
|  time |  トレイルの長さ（秒単位）| 


##Physics
<img width="327" alt="Unity_2018_2_5f1_Personal__64bit__-_SampleScene_unity_-_New_Unity_Project__2__-_PC__Mac___Linux_Standalone__Personal___Metal_.png" src="https://qiita-image-store.s3.amazonaws.com/0/158441/2b46a784-3d1c-ae42-80ca-3421e4fee951.png">

| 項目 | 内容 |
|:-----------|:-----------|
|　　enablePhysics| 描画するか
|  warmup |  トレイルが現れる前にシミュレーションされた秒数。 ゲーム開始時にトレイルを既にシミュレートしたい場合に便利です| 
|　gravity| トレイルに影響する重力
|  inertia|  トランスフォームからトレイルに転送される速度の量。 0は速度が転送されないことを意味し、1は速度の100％が転送されることを意味する| 
|  velocitySmoothing |  変換からトレイルに転送される速度に適用される時間平滑化の量| 
|　damping| トレイルの速度に適用されるダンピングの量。 値が大きくなると、時間の経過とともにトレールが遅くなります

##Rendering
<img width="328" alt="Unity_2018_2_5f1_Personal__64bit__-_SampleScene_unity_-_New_Unity_Project__2__-_PC__Mac___Linux_Standalone__Personal___Metal_.png" src="https://qiita-image-store.s3.amazonaws.com/0/158441/2daae03f-e0c9-02f8-2ab5-ccccbdc831c2.png">

| 項目 | 内容 |
|:-----------|:-----------|
|　　materials| トレイルをレンダリングするために使用されるマテリアルのリスト。 トレイルはマテリアルごとに1回レンダリングされます。
|  castShadows |  トレイルをレンダリングするときに使用されるシャドウキャストモード。| 
|　receiveShadows| 他のオブジェクトから影を受け取るべきか？ （シェーダが許可している場合）
|  useLightProbes |  ライトプローブをレンダリングに使用するかどうか（シェーダが許可している場合）| 

##Texture
<img width="329" alt="Unity_2018_2_5f1_Personal__64bit__-_SampleScene_unity_-_New_Unity_Project__2__-_PC__Mac___Linux_Standalone__Personal___Metal_.png" src="https://qiita-image-store.s3.amazonaws.com/0/158441/b959c6aa-1e79-3e92-fcc9-1c84c26ad3de.png">

| 項目 | 内容 |
|:-----------|:-----------|
|　　textureMode| トレイルの上にテクスチャを適用する方法：長さ全体に伸ばしたりする方法やタイルベースで描画する方法
|  uvFactor |  テクスチャモードが「タイル」に設定されている場合は、各タイルの幅を定義します| 
|　tileAnchor| テクスチャモードが「タイル」に設定されている場合、タイリングを開始する場所を定義します.0はトレイルの開始を意味し、1は終了を意味します