# 特殊エフェクト

特殊エフェクトは、@spawn コマンドに続けてエフェクト名を記述することで実行されます。例:

@spawn ShakeBackground

— これはメイン背景を揺らします。

paramsパラメータでエフェクトのパラメータを制御できます。例:

@spawn ShakeCharacter params:Kohaku,1

— これは "Kohaku" というIDのキャラクターを、デフォルトの3回ではなく、1回揺らします。

パラメータのサブセットを選択的に指定して、残りをデフォルト値のままにすることができます:

@spawn ShakePrinter params:,,0.5

— 最初の2つのパラメーター(プリンターIDとシェイク回数)はスキップされ、デフォルト値になります。しかし、3番目のパラメーター(シェイク時間)は0.5秒に設定されます。

@spawnコマンドを使うと、再スタートすることなくエフェクトパラメーターを更新できます。例:

; `Kohaku` キャラクターをループでゆっくりと揺らし始め、
; 完了を待たない(無限ループになっています)
@spawn ShakeCharacter params:Kohaku,0,,,0.1 wait:false
Kohaku: It's rumbling!
; 振幅を上げてさらに3回揺らす
@spawn ShakeCharacter params:Kohaku,3,,,0.8

一部のエフェクトはデフォルトで永続的になっており、@despawn コマンドを使用して手動で停止する必要があります。例:

; 雨をスタート
@spawn Rain
; 雨をストップ
@despawn Rain

一部のエフェクトの @despawn コマンドは、パラメータを受け取ることもできます(たとえば、フェードアウトの持続時間を制御)。例:

; 10秒かけて徐々に雨をストップ
@despawn Rain params:10

params が指定されていない場合、デフォルトのパラメータが使用されます。以下のドキュメントでは、各エフェクトで使用可能な "start" パラメータ(@spawnコマンドで使用可能)と "stop" パラメータ(@despawnコマンドで使用可能)と、それぞれのデフォルト値を確認できます。

エフェクト名の後に # で区切られたIDを追加することで、同じタイプの複数のエフェクトを開始できます。例:

; `Kohaku` と `Yuko` の両方をループで揺らす
@spawn ShakeCharacter#1 params:Kohaku,0 wait:false
@spawn ShakeCharacter#2 params:Yuko,0 wait:false

インスタンス化されたエフェクトを停止または更新するときは、IDを指定してください:

; `Yuko` の揺れを停止し、 `Kohaku` の振幅を上げる
@despawn ShakeCharacter#2
@spawn ShakeCharacter#1 params:k,0,,,1

IDには任意の文字列を使用できます(上記のような数字、またはより意味のあるもの、たとえば @spawn ShakeCharacter#Kohaku を使用できます)。IDは、そのエフェクト名で使用している他のIDに対してユニークなものにしてください。

# シェイクプリンター

指定したIDまたはデフォルトのIDを持つプリンターを揺らします。

パラメーター

名前 タイプ デフォルト 説明
Printer ID String null 揺らすプリンターのID。指定されていない場合、デフォルトのプリンターを揺らします。
Shake count Integer 2 シェイクの反復回数。0以下に設定すると、@despawn で停止するまでエフェクトがループします。
Shake duration Decimal 0.15 各振動の基本の持続時間。秒単位
Duration variation Decimal 0.25 エフェクトの基本の持続時間に適用する、ランダム化デルタ修飾子。
Shake amplitude Decimal 0.5 各振動の基本の変位振幅。各振動の基本の変位振幅。単位で。
Amplitude variation Decimal 0.1 エフェクトの基本の変位振幅に適用する、ランダム化デルタ修飾子。
Shake horizontally Boolean false アクターを水平方向に(x軸で)揺らすかどうか。
Shake vertically Boolean true アクターを垂直に(y軸で)揺らすかどうか。

UIが "Screen Space Overlay" モードに設定されている場合、顕著な効果を得るには、シェイクの振幅をデフォルトの約100倍くらいにする必要があります。

使用例

; デフォルトのプリンターを、デフォルトのパラメーターで揺らす。
@spawn ShakePrinter

; デフォルトのプリンターを水平に10回揺らす
@spawn ShakePrinter params:,10,,,,,true,false

; デフォルトのプリンターをループで揺らし始め、テキストを表示し、シェイクを停止
@spawn ShakePrinter params:,0 wait:false
What a shaky situation!
@despawn ShakePrinter

# 背景のシェイク

指定されたIDまたはメインの背景を揺らします。

パラメーター

名前 タイプ デフォルト 説明
Background ID String null 揺らす背景のID。指定しない場合は、メイン背景を揺らします。
Shake count Integer 3 シェイクの反復回数。0以下に設定すると、@despawn で停止するまでエフェクトがループします。
Shake duration Decimal 0.15 各振動の基本の持続時間。秒単位
Duration variation Decimal 0.25 エフェクトの基本の持続時間に適用する、ランダム化デルタ修飾子。
Shake amplitude Decimal 0.5 各振動の基本の変位振幅。各振動の基本の変位振幅。単位で。
Amplitude variation Decimal 0.5 エフェクトの基本の変位振幅に適用する、ランダム化デルタ修飾子。
Shake horizontally Boolean false アクターを水平方向に(x軸で)揺らすかどうか。
Shake vertically Boolean true アクターを垂直に(y軸で)揺らすかどうか。

使用例

; デフォルトのパラメーターでメイン背景を揺らす。
@spawn ShakeBackground

; 背景 `Video` を2回揺らす。
@spawn ShakeBackground params:Video,2

# キャラクターのシェイク

指定したIDまたは、表示されているキャラクターをランダムに揺らします。

パラメーター

名前 タイプ デフォルト 説明
Character ID String null 揺らすキャラクターのID。指定されていない場合、表示中のものからランダムに揺らします。
Shake count Integer 3 シェイクの反復回数。0以下に設定すると、@despawn で停止するまでエフェクトがループします。
Shake duration Decimal 0.15 各振動の基本の持続時間。秒単位
Duration variation Decimal 0.25 エフェクトの基本の持続時間に適用する、ランダム化デルタ修飾子。
Shake amplitude Decimal 0.5 各振動の基本の変位振幅。各振動の基本の変位振幅。単位で。
Amplitude variation Decimal 0.5 エフェクトの基本の変位振幅に適用する、ランダム化デルタ修飾子。
Shake horizontally Boolean false アクターを水平方向に(x軸で)揺らすかどうか。
Shake vertically Boolean true アクターを垂直に(y軸で)揺らすかどうか。

使用例

; キャラクター `Kohaku` をデフォルトのパラメーターで揺らす。
@spawn ShakeCharacter params:Kohaku

; ランダムなキャラクターを揺らし始め、停止するか行動を促すかの選択肢を示します。
@spawn ShakeCharacter params:,0
@choice "Continue shaking" goto:.Continue
@choice "Stop shaking" goto:.Stop
@stop
# Stop
@despawn ShakeCharacter
# Continue
...

# カメラのシェイク

メインのNaninovelレンダーカメラをシェイクします。

パラメーター

名前 タイプ デフォルト 説明
Camera Name String null 揺らすカメラオブジェクトの名前。指定しない場合、メインのNaninovelカメラを揺らします。
Shake count Integer 3 シェイクの反復回数。0以下に設定すると、@despawn で停止するまでエフェクトがループします。
Shake duration Decimal 0.15 各振動の基本の持続時間。秒単位
Duration variation Decimal 0.25 エフェクトの基本の持続時間に適用する、ランダム化デルタ修飾子。
Shake amplitude Decimal 0.5 各振動の基本の変位振幅。各振動の基本の変位振幅。単位で。
Amplitude variation Decimal 0.5 エフェクトの基本の変位振幅に適用する、ランダム化デルタ修飾子。
Shake horizontally Boolean false アクターを水平方向に(x軸で)揺らすかどうか。
Shake vertically Boolean true アクターを垂直に(y軸で)揺らすかどうか。

使用例

; デフォルトのパラメーターでメインのNaninovelカメラを揺らす。
@spawn ShakeCamera

; メインのNaninovelカメラを水平に5回振る。
@spawn ShakeCamera params:,5,,,,,true,false

# アクターのアニメーション化

(アニメーション)アクターパラメータを直接変更したい場合は、@animate コマンドの使用を検討してください。

# デジタルグリッチ

デジタルビデオの歪みと乱れをシミュレートする後処理エフェクトを、メインカメラに適用します。

パラメーター

名前 タイプ デフォルト 説明
Duration Decimal 1 エフェクトの持続時間。秒単位。
Intensity Decimal 1 エフェクトの強さ。0.0から10.0の範囲で。

使用例

; グリッチエフェクトをデフォルトのパラメーターで適用。
@spawn DigitalGlitch
; エフェクトを3.33秒間、強さを低めに適用する。
@spawn DigitalGlitch params:3.33,0.1

#

雨をシミュレートするパーティクルシステムを生成します。

パラメーター

名前 タイプ デフォルト 説明
Intensity Decimal 500 雨の強さ。(1秒あたりのパーティクルの生成レート)
Fade-in time Decimal 5 パーティクルシステムは、指定された時間(秒単位)にわたって、生成レートを0から目標レベルまで徐々に増やします。
X velocity Decimal 1 パーティクルの水平速度への乗数。雨滴の角度を変えるのに使用します。
Y velocity Decimal 1 パーティクルの垂直速度への乗数。

停止パラメーター

名前 タイプ デフォルト 説明
Fade-out time Decimal 5 パーティクルシステムは、指定された時間(秒単位)にわたって、生成レートを目標レベルから0に徐々に下げます。

使用例

; 10秒かけて激しい雨を降らせる。
@spawn Rain params:1500,10
; 30秒かけて雨を止める。
@despawn Rain params:30

#

雪をシミュレートするパーティクルシステムを生成します。

パラメーター

名前 タイプ デフォルト 説明
Intensity Decimal 100 雪の強さ。(1秒あたりのパーティクルの生成レート)
Fade-in time Decimal 5 パーティクルシステムは、指定された時間(秒単位)にわたって、生成レートを0から目標レベルまで徐々に増やします。

停止パラメーター

名前 タイプ デフォルト 説明
Fade-out time Decimal 5 パーティクルシステムは、指定された時間(秒単位)にわたって、生成レートを目標レベルから0に徐々に下げます。

使用例

; 10秒かけて激しい雪を降らせる。
@spawn Snow params:300,10
; 30秒かけて雪を止める。
@despawn Snow params:30

# 太陽光線

太陽光線をシミュレートするパーティクルシステムを生成します。

パラメーター

名前 タイプ デフォルト 説明
Intensity Decimal 0.85 光線の強さ (透明度)。
Fade-in time Decimal 3 パーティクルシステムは、指定された時間(秒単位)にわたって、強さを0から目標レベルまで徐々に増やします。

停止パラメーター

名前 タイプ デフォルト 説明
Fade-out time Decimal 3 パーティクルシステムは、指定された時間(秒単位)にわたって、透明度を目標レベルから0に徐々に下げます。

使用例

; 10秒かけて強めの太陽光を開始する。
@spawn SunShafts params:1,10
; 30秒かけて太陽光を停止する。
@despawn SunShafts params:30

# 被写界深度 (ボケ)

焦点の合ったオブジェクトだけが鮮明で、他の画像がボケた状態にする際の、被写界深度(別名DOF、ボケ)効果をシミュレートします。

TIP

1 つのオブジェクト(アクター)だけをぼかしたい場合は、代わりに「ぼかしエフェクト」の使用を検討してください。

パラメーター

名前 タイプ デフォルト 説明
Focus Object Name String null フォーカスするゲームオブジェクトの名前(省略可能)。設定すると、常にそのゲームオブジェクトをフォーカスするようになり、Focus Distance のパラメーターは無視されます。
Focus Distance Decimal 10 Naninovel カメラから焦点までの距離。Focus Object Name が指定されている場合は無視されます。
Focal Length Decimal 3.75 フォーカス以外の領域に適用するぼかしの量。フォーカス感度も決定します。
Duration Decimal 1 補間時間(パラメーターーが目標値に到達するまでの時間)。

停止パラメーター

名前 タイプ デフォルト 説明
Stop Duration Decimal 1 エフェクトパラメーターがデフォルト値に達してエフェクトが無くなるまでのフェードオフ(無効化)時間。

使用例

; デフォルトのパラメーターでエフェクトを有効にし、フォーカスを `Kohaku` ゲームオブジェクトに固定
@spawn DepthOfField params:Kohaku
; 10 秒かけてエフェクトをフェードオフ(無効化)する
@despawn DepthOfField params:10
; カメラから 10 ユニット離れたポイントをフォーカスし、焦点距離を 0.95 にし、3 秒かけて適用
@spawn DepthOfField params:,10,0.95,3

# ぼかし

アクターにぼかしフィルタを適用します。サポートされているアクターは、スプライト、レイヤー、分解スプライト、Live2D、Spine、ビデオ、シーンなどの実装の背景とキャラクターです。デフォルト(第 1 パラメーターが指定されていない場合)では、エフェクトは MainBackground アクターに適用されます。

パラメーター

Name Type Default Description
Actor ID String MainBackground エフェクトを適用するアクターの ID。アクターに IBlurable インターフェイスが実装されている必要があります。
Intensity Decimal 0.5 効果の強さを 0.0 ~ 1.0 の範囲で指定します。
Duration Decimal 1 補間時間(どのくらいの速さで Intensity が目標値に達するか)を秒単位で指定します。

停止パラメーター

Name Type Default Description
Stop Duration Decimal 1 エフェクトのフェードオフ(無効化)時間を秒単位で指定します。

使用例

; 現在のメイン背景にほかしを適用します
@spawn Blur
; `Sky` 背景に、2.5 秒かけて、最大の強さでぼかしを適用します
@spawn Blur params:Sky,1,2.5
; フェードオフしてぼかしを無効にします
@despawn Blur

# カスタムエフェクトの追加

# スタンドアロンエフェクト

カスタムスタンドアロンエフェクト(組み込みエフェクト"雨" や "雪" のように、プレハブを介して実装)を追加するには、スポーンリソースマネージャー(Naninovel -> Resources -> Spwan) を介してエフェクトプレハブを追加します。組み込みのエフェクトと同じように @spawn コマンドと @despawn コマンドを使用できます。

たとえば、スポーンマネージャーから割り当てられた Explosion.prefab プレハブがあるとします。次のコマンドは、プレハブをシーンに生成および破棄します:

@spawn Explosion
@despawn Explosion

大量のスポーンプレハブがありエディターメニューから割り当てるのが大変な場合は、 Resources/Naninovel/Spawn フォルダーにドロップするだけで自動的にスクリプトで使用できるようになります。必要に応じて、さらにサブフォルダで整理することもできます。この場合、naninovelスクリプトで参照する場合はスラッシュ (/) を使用します。たとえば、 Resources/Naninovel/Spawn/Explosions/Boom01 として保存されたプレハブは、 Explosions/Boom01 としてスクリプトから参照できます。

addressable asset system を使用して手動でリソースを公開することもできます。アセットを公開するには、使用するパスと同じアドレスを "Resources/" の部分を除いて、上記の方法で割り当てます。たとえば、"Boom01" プレハブアセットを公開するには、次のアドレスにアセットを割り当てます: Naninovel/Spawn/Boom01。Addressable 機能はデフォルトではエディターで使用できないことに注意してください。リソースプロバイダーのコンフィグメニューで Enable Addressable In Editor プロパティを有効にすることで許可できます。

実装の参考として、Naninovel/Prefabs/FX に保存されている組み込みのエフェクトプレハブをご覧ください。

# カメラエフェクト

カスタム 後処理エフェクト (つまり"デジタルグリッチ"などの画像効果またはカメラフィルター)をNaninovelカメラに適用したい場合は、カメラプレハブを作成 し、カメラオブジェクトに 必要なエフェクトコンポーネントを追加 し、プレハブをカメラコンフィグメニュー (Naninovel -> Configuration -> Camera) の Custom Camera Prefab フィールドに割り当てます。

Naninovel スクリプトから toggle パラメーターを使って、追加したコンポーネントをトグル(有効と無効を切り替え)できます。@camera コマンドの set パラメーターで有効なステートを明示的に設定できます。たとえば、"Bloom Image Effect" コンポーネントをカメラオブジェクトに追加したとします。まず、コンポーネントの種類名を調べます。これは通常、コンポーネントの Script フィールドに表示されています。

この場合、コンポーネントの種類名は BloomImageEffect です。種類名を使用して、次のように実行時にこのコンポーネントを切り替えます:

@camera toggle:BloomImageEffect

種類名をコンマで区切ることにより、複数のコンポーネントを一度に切り替えることができます:

@camera toggle:BloomImageEffect,Sepia,CameraNoise

また、コンポーネントを明示的に有効または無効にする場合:

@camera set:BloomImageEffect.true,Sepia.false,CameraNoise.true

— これは BloomImageEffectCameraNoise コンポーネントを有効にしつつ、Sepia を無効にします。

現在有効(および無効)のカスタムカメラコンポーネントのステートは、ゲームのセーブロード操作で自動的に保存および復元されます。

カスタムカメラフィルター効果の追加例については、次のどうがをご覧ください。

最終更新 日: 2021年5月6日