特殊効果
多くの組み込みスクリプトコマンドは、さまざまな特殊効果専用です。たとえば、@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 など)または継続的(@show や @blur など)にすることができます。標準効果のリストとカスタム効果を追加する方法については、以下をお読みください。
Shake
指定されたアクターまたはメインカメラを振ります。専用コマンド: @shake
開始パラメータ
| 名前 | タイプ | デフォルト | 説明 |
|---|---|---|---|
| ID | String | null | 振るアクターのID。メインカメラを振るには Camera を指定します。 |
| Shake count | Number | 3 | シェイクの反復回数。 |
| Loop | Boolean | false | 有効にすると、@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!Glitch
デジタルビデオの歪みやアーティファクトをシミュレートするポストプロセスエフェクトをメインカメラに適用します。専用コマンド: @glitch
開始パラメータ
| 名前 | タイプ | デフォルト | 説明 |
|---|---|---|---|
| Duration | Number | 1 | 効果の期間(秒単位)。 |
| Intensity | Number | 1 | 効果の強度(0.0〜1.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
TIP
1つのオブジェクト(アクター)だけをぼかしたい場合は、代わりに ブラー効果 の使用を検討してください。
開始パラメータ
| 名前 | タイプ | デフォルト | 説明 |
|---|---|---|---|
| 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
; 焦点をカメラから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上記のステートメントは、1.5秒かけて「DropFade」トランジションを使用して「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すべてのトランジションパラメータは number タイプです。
上記の例はキャラクターにも機能します。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カスタム効果の追加
カスタムスポーン効果
スポーンリソースマネージャー(Naninovel -> Resources -> Spawn)を介して効果プレハブを追加し、@spawn および @despawn コマンドを使用することで、カスタムスタンドアロン効果(「Rain」および「Snow」組み込み効果のようなプレハブを介して実装)を追加できます。
たとえば、スポーンマネージャーを介して Explosion.prefab プレハブが割り当てられている場合、次のコマンドはシーン上でプレハブをスポーンおよびデスポーン(破棄)します。
@spawn Explosion
@despawn Explosion追加の効果パラメータは params で指定できます。
@spawn Explosion params:Kohaku,3,trueTIP
複数のパラメータを持つカスタム効果を構築する場合は、カスタムコマンド を作成し、SpawnEffect から継承することを検討してください。これにより、params 配列内のパラメータ位置を覚える必要がなくなり、IDE拡張機能 を使用するときに自動補完と型チェックが可能になります。
@explode Kohaku power:3 smoke!@spawn コマンドには変換パラメータもあり、特定のシーンまたはワールド位置、特定の回転またはスケールでオブジェクトをスポーンできます。例:
; 画面の左端から15%の位置にExplosionをスポーンします
; x10スケールで、Z軸を中心に15度回転します。
@spawn Explosion pos:15 scale:10 rotation:,,15スポーンするプレハブが多く、エディタメニューから割り当てるのが不便な場合は、Resources/Naninovel/Spawn フォルダにドロップするだけで、スクリプトで自動的に利用可能になります。必要に応じて、さらにサブフォルダで整理することもできます。この場合、シナリオスクリプトで参照するときはスラッシュ(/)を使用します。たとえば、Resources/Naninovel/Spawn/Explosions/Boom01 として保存されているプレハブアセットは、スクリプトで Explosions/Boom01 として参照できます。
Addressable Asset System を使用してリソースを手動で公開することも可能です。アセットを公開するには、上記の方法で公開するために使用するパスと同じアドレスを割り当てますが、「Resources/」部分を省略します。たとえば、「Boom01」プレハブアセットを公開するには、アセットに次のアドレスを割り当てます:Naninovel/Spawn/Boom01。Addressableプロバイダーはデフォルトではエディタで使用されないことに注意してください。リソースプロバイダー構成メニューで Enable Addressable In Editor プロパティを有効にすることで許可できます。
参考実装については、Naninovel/Prefabs/FX に保存されている組み込み効果プレハブを確認してください。
カスタムカメラ効果
Naninovelカメラにカスタム ポストプロセスエフェクト(別名イメージエフェクトまたはカメラフィルター、「Digital Glitch」組み込み効果など)を適用したい場合は、カメラプレハブを作成 し、必要な効果コンポーネントを追加 して、カメラ構成メニュー(Naninovel -> Configuration -> Camera)の Custom Camera Prefab フィールドにプレハブを割り当てます。
シナリオスクリプトを介して、toggle パラメータを使用して追加されたコンポーネントを切り替え(無効の場合は有効にし、その逆も同様)、@camera コマンドの set パラメータで有効状態を明示的に設定できます。たとえば、「Bloom Image Effect」コンポーネントをカメラオブジェクトに追加したとします。まず、コンポーネントのタイプ名を確認します。通常はコンポーネントの Script フィールドに指定されています。
この場合、コンポーネントのタイプ名は BloomImageEffect です。タイプ名を使用して、次のように実行時にこのコンポーネントを切り替えます。
@camera toggle:BloomImageEffectコンマでタイプ名を区切ることで、複数のコンポーネントを一度に切り替えることができます。
@camera toggle:BloomImageEffect,Sepia,CameraNoiseコンポーネントを明示的に有効または無効にしたい場合:
@camera set:BloomImageEffect.true,Sepia.false,CameraNoise.true— BloomImageEffect と CameraNoise コンポーネントを有効にし、Sepia を無効にします。
カメラオブジェクトにアタッチされているすべてのコンポーネントを切り替え、無効化、または有効化するには、* 記号を使用します。
; すべてのコンポーネントを切り替える
@camera toggle:*
; すべてのコンポーネントを無効にする
@camera set:*.false
; すべてのコンポーネントを有効にする
@camera set:*.true現在有効(および無効)になっているカメラコンポーネントの状態は、ゲームの保存ロード操作時に自動的に保存および復元されます。
カスタムカメラフィルター効果を追加する例については、次のビデオを確認してください。
カスタムトランジションエフェクト
ディゾルブマスク
ディゾルブマスクテクスチャに基づいてカスタムトランジションを作成できます。ディゾルブマスクはグレースケールテクスチャであり、色はピクセルがターゲットテクスチャに遷移するタイミングを定義します。たとえば、次のスパイラルディゾルブマスクを考えてみましょう。
— 右上の黒い四角は、トランジションの開始時にトランジションターゲットがそこに表示されることを示し、中央の真っ白な四角は最後に遷移します。
TIP
メモリ使用量を最適化するには、ディゾルブテクスチャのインポート設定で「Single Channel」と「Red」を設定します。また、視覚的なアーティファクトを防ぐために、Non-Power of 2 と Generate Mip Maps オプションが無効になっていることを確認してください。
カスタムトランジションを作成するには、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 Shader プロパティに割り当てます。カスタムアクターシェーダーの作成と割り当て方法の詳細については、カスタムアクターシェーダー ガイドを参照してください。
スクリプトコマンドでトランジション名が指定されると、アクターが使用するマテリアルで同じ名前(NANINOVEL_TRANSITION_ 接頭辞付き)の シェーダーキーワード が有効になります。
独自のトランジションをカスタムアクターシェーダーに追加するには、multi_compile ディレクティブを使用します。例:
#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 transition.
return transitionUV.x > progress ? mainColor
: lerp(mainColor / progress * .1, transColor, progress);
#endif
#ifdef NANINOVEL_TRANSITION_CUSTOM2 // Custom2 transition.
return lerp(mainColor * (1.0 - progress), transColor * progress, progress);
#endif
// トランジションキーワードが有効になっていない場合、デフォルトでクロスフェードになります。
return lerp(mainColor, transColor, progress);
}これで、組み込みのものと同じ方法で追加されたトランジションを呼び出すことができます。例:
@back Snow.Custom1
@back River.Custom2完全なシェーダーの例については、カスタムアクターシェーダー ガイドを参照してください。