特殊効果
さまざまな特殊効果専用の組み込みスクリプトコマンドが多数用意されています。たとえば、@shake コマンドはアクターをシェイクします。
; 「Kohaku」アクターをシェイクします
@shake Kohakuほとんどの効果はパラメーターで調整できます。
; 「Kohaku」を1回シェイクします(デフォルトの3回の代わりに)
@shake Kohaku count:1効果を再起動せずに効果パラメーターを更新できます。
; 「Kohaku」アクターをループでゆっくりとシェイクし始めます
@shake Kohaku loop! power:0.1
Kohaku: 揺れてる!
; 振幅を増やしてあと3回シェイクします
@shake Kohaku count:3 power:0.8一部の効果はデフォルトで動作し続けるため、明示的に停止する必要があります。
; 雨を開始します
@rain
; 雨を停止します
@rain power:0組み込み効果の説明と、カスタム効果を追加する 方法については、以下をお読みください。
スポーン効果
スポーン効果は、@spawn コマンドに基づいているか、そこから派生しています。1回限りのもの(@glitch など)もあれば、継続的なもの(@snow や @blur など)もあります。標準効果のリストとカスタム効果を追加する方法については、以下をお読みください。
Shake
指定されたアクターまたはメインカメラをシェイクします。専用コマンド:@shake
開始パラメーター
| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
| ID | String | null | シェイクするアクターのID。メインカメラをシェイクするには Camera を指定します。 |
| Shake count | Number | 3 | シェイクの反復回数。 |
| Loop | Boolean | false | 有効にすると、!loop または @despawn で停止するまで効果をループします。 |
| Shake duration | Number | 0.15 | 各シェイク反復の基本時間(秒単位)。 |
| Duration variation | Number | 0.25 | 効果の基本時間に適用されるランダムな変動幅。 |
| Shake amplitude | Number | 0.5 | 各シェイク反復の基本変位振幅(ユニット単位)。 |
| Amplitude variation | Number | 0.5 | 効果の基本変位振幅に適用されるランダムな変動幅。 |
| Shake horizontally | Boolean | false | アクターを水平方向(X軸)に変位させるかどうか。 |
| Shake vertically | Boolean | true | アクターを垂直方向(Y軸)に変位させるかどうか。 |
例
; 現在のデフォルトのテキストプリンターをシェイクします
@shake
; デフォルトのパラメーターで「Kohaku」アクターをシェイクします
@shake Kohaku
; メインカメラを水平方向に5回シェイクします
@shake Camera count:5 hor! !verGlitch
デジタルビデオの歪みやアーティファクトをシミュレートするポストプロセス効果をメインカメラに適用します。専用コマンド:@glitch
開始パラメーター
| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
| Duration | Number | 1 | 効果の時間(秒単位)。 |
| Intensity | Number | 1 | 効果の強度(0.0〜10.0の範囲)。 |
例
; デフォルトのパラメーターでグリッチ効果を適用します
@glitch
; 低い強度で3.33秒かけて効果を適用します
@glitch power:0.1 time:3.33Rain
雨をシミュレートするパーティクルシステムをスポーンします。専用コマンド:@rain
開始パラメーター
| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
| Intensity | Number | 0.5 | 雨の強度(1秒あたりのパーティクルスポーン率)。 |
| Fade-in time | Number | 5 | パーティクルシステムは、指定された時間(秒単位)でスポーン率を0から目標レベルまで徐々に増加させます。 |
| X velocity | Number | 1 | パーティクルの水平速度の乗数。雨滴の角度を変更するために使用します。 |
| Y velocity | Number | 1 | パーティクルの垂直速度の乗数。 |
停止パラメーター
| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
| Fade-out time | Number | 5 | パーティクルシステムは、指定された時間(秒単位)でスポーン率を目標レベルから0まで徐々に減少させます。 |
例
; 10秒かけて激しい雨を開始します
@rain power:1 time:10
; 30秒かけて雨を停止します
@rain power:0 time:30Snow
雪をシミュレートするパーティクルシステムをスポーンします。専用コマンド:@snow
開始パラメーター
| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
| Intensity | Number | 0.5 | 雪の強度(1秒あたりのパーティクルスポーン率)。 |
| Fade-in time | Number | 5 | パーティクルシステムは、指定された時間(秒単位)でスポーン率を0から目標レベルまで徐々に増加させます。 |
停止パラメーター
| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
| Fade-out time | Number | 5 | パーティクルシステムは、指定された時間(秒単位)でスポーン率を目標レベルから0まで徐々に減少させます。 |
例
; 10秒かけて激しい雪を開始します
@snow power:1 time:10
; 30秒かけて雪を停止します
@snow power:0 time:30Sun
太陽光線(レイ)をシミュレートするパーティクルシステムをスポーンします。専用コマンド:@sun
開始パラメーター
| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
| Intensity | Number | 0.85 | 光線の強度(不透明度)。 |
| Fade-in time | Number | 3 | パーティクルシステムは、指定された時間(秒単位)で強度を0から目標レベルまで徐々に増加させます。 |
停止パラメーター
| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
| Fade-out time | Number | 3 | パーティクルシステムは、指定された時間(秒単位)で不透明度を目標レベルから0まで徐々に減少させます。 |
例
; 10秒かけて強い日差しを開始します
@sun power:1 time:10
; 30秒かけて日差しを停止します
@sun power:0 time:30Bokeh
被写界深度(別名DOF、ボケ)効果をシミュレートします。焦点の合っているオブジェクトのみが鮮明に保たれ、画像の残りの部分はぼやけます。専用コマンド:@bokeh
ヒント
1つのオブジェクト(アクター)だけをぼかしたい場合は、代わりに Blur効果 の使用を検討してください。
開始パラメーター
| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
| Focus Object Name | String | null | 焦点を設定するゲームオブジェクトの名前(オプション)。設定すると、焦点は常にゲームオブジェクトに留まり、Focus Distance パラメーターは無視されます。 |
| Focus Distance | Number | 10 | Naninovelカメラから焦点までの距離。Focus Object Name が指定されている場合は無視されます。 |
| Focal Length | Number | 3.75 | 焦点が合っていない領域に適用するぼかしの量。焦点の感度も決定します。 |
| Duration | Number | 1 | 補間時間(パラメーターが目標値に到達する速さ)。 |
停止パラメーター
| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
| Stop Duration | Number | 1 | 効果が表示されないデフォルト値に効果パラメーターが到達するまでのフェードアウト(無効化)時間。 |
例
; デフォルトのパラメーターでボケを有効にし、「Kohaku」ゲームオブジェクトに焦点をロックします
@bokeh Kohaku
; 10秒かけて効果をフェードアウト(無効化)します
@bokeh power:0 time:10
; 焦点をカメラから10ユニット離れた場所に設定し、
; 焦点距離を0.95にし、3秒かけて適用します
@bokeh dist:10 power:0.95 time:3Blur
サポートされているアクター(スプライト、レイヤー、ダイススプライト、ユニバーサル、Live2D、Spine、ビデオ、プレースホルダー、シーン実装の背景とキャラクター)にぼかしフィルターを適用します。デフォルトでは(最初のパラメーターが指定されていない場合)、効果は MainBackground アクターに適用されます。専用コマンド:@blur
開始パラメーター
| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
| Actor ID | String | MainBackground | 効果を適用するアクターのID。効果をサポートするには、アクターが IBlurable インターフェースを実装している必要があります。 |
| Intensity | Number | 0.5 | 効果の強度(0.0〜1.0の範囲)。 |
| Duration | Number | 1 | 補間時間(秒単位)(強度が目標値に到達する速さ)。 |
停止パラメーター
| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
| Stop Duration | Number | 1 | 効果のフェードアウト(無効化)時間(秒単位)。 |
例
; 現在のメイン背景にぼかしを適用します
@blur
; 「Sky」背景に最大強度で2.5秒かけてぼかしを適用します
@blur Sky power:1 time:2.5
; ぼかしをフェードアウトして無効にします
@blur power:0トランジションエフェクト
@back および @char で背景とキャラクターの外観を変更したり、@trans コマンドでシーントランジションを実行したりする場合、使用するトランジションエフェクトを追加で指定できます。たとえば、次のコマンドは、「DropFade」トランジションエフェクトを使用して「River」背景に遷移します。
@back River.DropFadeトランジションエフェクトが指定されていない場合、デフォルトでクロスフェードが使用されます。
time パラメーターを使用して、トランジションの時間(秒単位)を指定することもできます。
@back River.DropFade time:1.5上記のコマンドは、「DropFade」トランジションで1.5秒かけて「River」背景に遷移します。すべてのトランジションのデフォルトの time は0.35秒です。
次のコマンドを実行する前にトランジションが完了するのを待ちたい場合は、wait! を追加します。
@back River.Ripple time:1.5 wait!
@bgm PianoTheme— 「PianoTheme」背景音楽は、トランジションが完了した後にのみ再生を開始します。
一部のトランジションエフェクトは追加のパラメーターもサポートしており、params パラメーターで制御できます。
@back River.Ripple params:10,5,0.02— リップルエフェクトの周波数を10、速度を5、振幅を0.02に設定します。params が指定されていない場合、デフォルトのパラメーターが使用されます。
特定のパラメーターだけを変更したい場合は、他のパラメーターを省略できます。省略したパラメーターにはデフォルト値が使用されます。
@back River.Ripple params:,,0.02すべてのトランジションパラメーターは数値型です。
上記の例はキャラクターにも適用できます。トランジションは via パラメーターで指定します。
@char CharID.Appearance via:TransitionType params:...以下のドキュメントで、利用可能なトランジションエフェクトとそのパラメーターおよびデフォルト値を確認できます。
BandedSwirl
パラメーター
| 名前 | デフォルト |
|---|---|
| Twist amount | 5 |
| Frequency | 10 |
例
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.BandedSwirl
; ねじれ量はデフォルトのまま、低い周波数でトランジションを適用します
@back Appearance.BandedSwirl params:,2.5Blinds
パラメーター
| 名前 | デフォルト |
|---|---|
| Count | 6 |
例
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.Blinds
; デフォルトの6ではなく30のブラインドを使用してトランジションを適用します
@back Appearance.Blinds params:30CircleReveal
パラメーター
| 名前 | デフォルト |
|---|---|
| Fuzzy amount | 0.25 |
例
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.CircleReveal
; 高いぼかし量でトランジションを適用します
@back Appearance.CircleReveal params:3.33CircleStretch
例
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.CircleStretchCloudReveal
例
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.CloudRevealCrossfade
例
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.CrossfadeCrumble
例
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.CrumbleDissolve
パラメーター
| 名前 | デフォルト |
|---|---|
| Step | 99999 |
例
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.Dissolve
; 低いステップでトランジションを適用します
@back Appearance.Dissolve params:100DropFade
例
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.DropFadeLineReveal
パラメーター
| 名前 | デフォルト |
|---|---|
| Fuzzy amount | 0.25 |
| Line Normal X | 0.5 |
| Line Normal Y | 0.5 |
| Reverse | 0 |
例
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.LineReveal
; 垂直ラインスライドでトランジションを適用します
@back Appearance.LineReveal params:,0,1
; 逆方向(右から左)にトランジションを適用します
@back Appearance.LineReveal params:,,,1Pixelate
例
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.PixelateRadialBlur
例
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.RadialBlurRadialWiggle
例
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.RadialWiggleRandomCircleReveal
例
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.RandomCircleRevealRipple
パラメーター
| 名前 | デフォルト |
|---|---|
| Frequency | 20 |
| Speed | 10 |
| Amplitude | 0.5 |
例
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.Ripple
; 高い周波数と振幅でトランジションを適用します
@back Appearance.Ripple params:45,,1.1RotateCrumble
例
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.RotateCrumbleSaturate
例
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.SaturateShrink
パラメーター
| 名前 | デフォルト |
|---|---|
| Speed | 200 |
例
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.Shrink
; 低速度でトランジションを適用します
@back Appearance.Shrink params:50SlideIn
パラメーター
| 名前 | デフォルト |
|---|---|
| Slide amount | 1 |
例
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.SlideInSwirlGrid
パラメーター
| 名前 | デフォルト |
|---|---|
| Twist amount | 15 |
| Cell count | 10 |
例
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.SwirlGrid
; 高いねじれと低いセル数でトランジションを適用します
@back Appearance.SwirlGrid params:30,4Swirl
パラメーター
| 名前 | デフォルト |
|---|---|
| Twist amount | 15 |
例
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.Swirl
; 高いねじれでトランジションを適用します
@back Appearance.Swirl params:25Water
例
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.WaterWaterfall
例
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.WaterfallWave
パラメーター
| 名前 | デフォルト |
|---|---|
| Magnitude | 0.1 |
| Phase | 14 |
| Frequency | 20 |
例
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.Wave
; 高いマグニチュードと低い周波数でトランジションを適用します
@back Appearance.Wave params:0.75,,5アニメーションイージング
時間をかけて値を変更するコマンドの多くは、オプションの easing パラメーターに対応しています。このパラメーターで、時間経過に伴う値の変化の仕方を制御できます。サポートされているオプションは次のとおりです。
Linear
SmoothStep
Spring
EaseInQuad
EaseOutQuad
EaseInOutQuad
EaseInCubic
EaseOutCubic
EaseInOutCubic
EaseInQuart
EaseOutQuart
EaseInOutQuart
EaseInQuint
EaseOutQuint
EaseInOutQuint
EaseInSine
EaseOutSine
EaseInOutSine
EaseInExpo
EaseOutExpo
EaseInOutExpo
EaseInCirc
EaseOutCirc
EaseInOutCirc
EaseInBounce
EaseOutBounce
EaseInOutBounce
EaseInBack
EaseOutBack
EaseInOutBack
EaseInElastic
EaseOutElastic
EaseInOutElasticたとえば、次のコマンドは EaseOutBounce イージングを使用し、1.5秒かけて DropFade トランジションエフェクトで River 背景に遷移します。
@back River.DropFade time:1.5 easing:EaseOutBounceカスタム効果の追加
カスタムスポーン効果
組み込みの「Rain」や「Snow」と同様に、プレハブで実装した独立したカスタム効果を追加できます。効果のプレハブをスポーンリソースマネージャー(Naninovel -> Resources -> Spawn)に追加し、@spawn および @despawn コマンドで使用します。
たとえば、スポーンマネージャーを介して Explosion.prefab プレハブが割り当てられている場合、次のコマンドはシーン上でプレハブをスポーンおよびデスポーン(破棄)します。
@spawn Explosion
@despawn Explosion追加の効果パラメーターは params で指定できます。
@spawn Explosion params:Kohaku,3,trueヒント
複数のパラメーターを持つカスタム効果を構築する場合は、カスタムコマンド を作成し、SpawnEffect から継承することを検討してください。これにより、params 配列内のパラメーター位置を覚える必要がなくなり、IDE拡張機能 を使用するときに自動補完と型チェックが可能になります。
@explode Kohaku power:3 smoke!@spawn コマンドにはトランスフォームパラメーターもあり、特定のシーンまたはワールド位置、特定の回転またはスケールでオブジェクトをスポーンできます。例:
; Explosionを画面の左端から15%の位置に、
; 10倍のスケールで、Z軸を中心に15度回転させてスポーンします。
@spawn Explosion pos:15 scale:10 roll:15スポーンするプレハブが多く、エディターメニューから割り当てるのが不便な場合は、Resources/Naninovel/Spawn フォルダーに入れるだけで、スクリプトで自動的に利用可能になります。必要に応じて、さらにサブフォルダーで整理することもできます。この場合、シナリオスクリプトで参照するときはスラッシュ(/)を使用します。たとえば、Resources/Naninovel/Spawn/Explosions/Boom01 として保存されているプレハブアセットは、スクリプトで Explosions/Boom01 として参照できます。
Addressable Asset System を使用してリソースを手動で公開することもできます。アセットには、上記の方法で使用するパスから「Resources/」部分を除いたアドレスを割り当てます。たとえば、「Boom01」プレハブアセットを公開するには、アセットに次のアドレスを割り当てます:Naninovel/Spawn/Boom01。エディター内では、特別な「Editor」リソースプロバイダーが常に優先されます。Addressableプロバイダーによるロードが試みられるのは、エディターメニューで割り当てられていないリソースのみです。
参考実装については、Naninovel/Prefabs/FX に保存されている組み込み効果プレハブを確認してください。
カスタムカメラ効果
カメラ効果を Volumeプロファイル で作成し、プロファイルアセットをカメラ構成メニュー(Naninovel -> Configuration -> Camera)の Volumes に追加します。
@camera の fx パラメーターを使用して効果のウェイトを設定します。各エントリは、プロファイル名とそれに続くウェイトで構成されます。0 では影響せず、1 で完全に適用されます。
@camera fx:Dream.11つのコマンドで複数のプロファイルをブレンドできます。通常のカメラアニメーションパラメーターでブレンドを制御します。
@camera fx:Dream.0,Night.1 time:3 easing:EaseOutQuadカスタムカメラ(ポストプロセス)効果と関連するVolumeコンポーネントを追加するには、Unityガイド に従ってください。
例
カメラ効果の使用例は サンプルプロジェクト にあります。Volumeプロファイルは Settings/Render/Volumes に保存されています。
カスタムトランジションエフェクト
ディゾルブマスク
ディゾルブマスクテクスチャを使ってカスタムトランジションを作成できます。ディゾルブマスクはグレースケールのテクスチャで、各ピクセルの色によって、ターゲットテクスチャに遷移するタイミングが決まります。たとえば、次のスパイラルディゾルブマスクをご覧ください。
— 右上の黒い四角は、トランジションの開始時にトランジションターゲットがそこに表示されることを示し、中央の真っ白な四角は最後に遷移します。
ヒント
メモリ使用量を最適化するには、ディゾルブテクスチャのインポート設定で Single Channel と Red を設定します。また、視覚的なアーティファクトを防ぐために、Non-Power of 2 と Generate Mipmap オプションが無効になっていることを確認してください。
カスタムトランジションを作成するには、Custom トランジションモードを使用し、dissolve パラメーターを介してディゾルブマスクテクスチャへのパス(プロジェクトの「Resources」フォルダーからの相対パス)を指定します。例:
@back Appearance.Custom dissolve:Textures/Spiralトランジションの境界を滑らかにする(ぼかす)には、最初のパラメーターを0(スムージングなし)から100(最大スムージング)の範囲で指定します。例:
@back Appearance.Custom dissolve:Textures/Spiral params:90トランジションを反転するには(ディゾルブマスクの明るい領域が最初に表示されます)、2番目のパラメーターを1に設定します。例:
@back Appearance.Custom dissolve:Textures/Spiral params:,1使用例については、次のビデオを確認してください。
カスタムシェーダー
カスタムアクター シェーダー を介して完全にカスタムなトランジションエフェクトを追加することが可能です。
新しいシェーダーを作成し、そのシェーダーを使用するマテリアルを用意します。カスタムトランジションエフェクトを使用するアクターの Custom Texture Material プロパティに、そのマテリアルを割り当ててください。カスタムアクターシェーダーの作成と割り当て方法の詳細については、カスタムアクターシェーダー ガイドを参照してください。
スクリプトコマンドでトランジション名が指定されると、アクターが使用するマテリアルで同じ名前(NANINOVEL_TRANSITION_ プレフィックス付き)の シェーダーキーワード が有効になります。
独自のトランジションをカスタムアクターシェーダーに追加するには、multi_compile_local ディレクティブを使用します。例:
#pragma multi_compile_local _ NANINOVEL_TRANSITION_CUSTOM1 NANINOVEL_TRANSITION_CUSTOM2— Custom1 および Custom2 トランジションを追加します。
その後、条件付きディレクティブを使用して、有効なトランジションキーワードに基づいて特定のレンダリングメソッドを選択できます。組み込みアクターシェーダーを再利用する場合、フラグメントハンドラーで使用される ApplyTransitionEffect メソッドを介してカスタムトランジションを実装することが可能です。
fixed4 ApplyTransitionEffect(sampler2D mainTex, float2 mainUV,
sampler2D transitionTex, float2 transitionUV, float progress,
float4 params, float2 randomSeed, sampler2D cloudsTex, sampler2D customTex)
{
const fixed4 CLIP_COLOR = fixed4(0, 0, 0, 0);
fixed4 mainColor = Tex2DClip01(mainTex, mainUV, CLIP_COLOR);
fixed4 transColor = Tex2DClip01(transitionTex, transitionUV, CLIP_COLOR);
#ifdef NANINOVEL_TRANSITION_CUSTOM1 // Custom1トランジション。
return transitionUV.x > progress ? mainColor
: lerp(mainColor / progress * .1, transColor, progress);
#endif
#ifdef NANINOVEL_TRANSITION_CUSTOM2 // Custom2トランジション。
return lerp(mainColor * (1.0 - progress), transColor * progress, progress);
#endif
// トランジションキーワードが有効になっていない場合、デフォルトでクロスフェードになります。
return lerp(mainColor, transColor, progress);
}これで、追加したトランジションを組み込みのものと同じ方法で呼び出せます。例:
@back Snow.Custom1
@back River.Custom2完全なシェーダーの例については、カスタムアクターシェーダー ガイドを参照してください。