コンテンツにスキップ

特殊効果 ​

さまざまな特殊効果専用の組み込みスクリプトコマンドが多数用意されています。たとえば、@shake コマンドはアクターをシェイクします。

nani
; 「Kohaku」アクターをシェイクします
@shake Kohaku

ほとんどの効果はパラメーターで調整できます。

nani
; 「Kohaku」を1回シェイクします(デフォルトの3回の代わりに)
@shake Kohaku count:1

効果を再起動せずに効果パラメーターを更新できます。

nani
; 「Kohaku」アクターをループでゆっくりとシェイクし始めます
@shake Kohaku loop! power:0.1
Kohaku: 揺れてる!
; 振幅を増やしてあと3回シェイクします
@shake Kohaku count:3 power:0.8

一部の効果はデフォルトで動作し続けるため、明示的に停止する必要があります。

nani
; 雨を開始します
@rain
; 雨を停止します
@rain power:0

組み込み効果の説明と、カスタム効果を追加する 方法については、以下をお読みください。

スポーン効果 ​

スポーン効果は、@spawn コマンドに基づいているか、そこから派生しています。1回限りのもの(@glitch など)もあれば、継続的なもの(@snow や @blur など)もあります。標準効果のリストとカスタム効果を追加する方法については、以下をお読みください。


Shake ​

指定されたアクターまたはメインカメラをシェイクします。専用コマンド:@shake

cover

開始パラメーター

名前型デフォルト説明
IDStringnullシェイクするアクターのID。メインカメラをシェイクするには Camera を指定します。
Shake countNumber3シェイクの反復回数。
LoopBooleanfalse有効にすると、!loop または @despawn で停止するまで効果をループします。
Shake durationNumber0.15各シェイク反復の基本時間(秒単位)。
Duration variationNumber0.25効果の基本時間に適用されるランダムな変動幅。
Shake amplitudeNumber0.5各シェイク反復の基本変位振幅(ユニット単位)。
Amplitude variationNumber0.5効果の基本変位振幅に適用されるランダムな変動幅。
Shake horizontallyBooleanfalseアクターを水平方向(X軸)に変位させるかどうか。
Shake verticallyBooleantrueアクターを垂直方向(Y軸)に変位させるかどうか。

例

nani
; 現在のデフォルトのテキストプリンターをシェイクします
@shake

; デフォルトのパラメーターで「Kohaku」アクターをシェイクします
@shake Kohaku

; メインカメラを水平方向に5回シェイクします
@shake Camera count:5 hor! !ver

Glitch ​

デジタルビデオの歪みやアーティファクトをシミュレートするポストプロセス効果をメインカメラに適用します。専用コマンド:@glitch

cover

開始パラメーター

名前型デフォルト説明
DurationNumber1効果の時間(秒単位)。
IntensityNumber1効果の強度(0.0〜10.0の範囲)。

例

nani
; デフォルトのパラメーターでグリッチ効果を適用します
@glitch

; 低い強度で3.33秒かけて効果を適用します
@glitch power:0.1 time:3.33

Rain ​

雨をシミュレートするパーティクルシステムをスポーンします。専用コマンド:@rain

cover

開始パラメーター

名前型デフォルト説明
IntensityNumber0.5雨の強度(1秒あたりのパーティクルスポーン率)。
Fade-in timeNumber5パーティクルシステムは、指定された時間(秒単位)でスポーン率を0から目標レベルまで徐々に増加させます。
X velocityNumber1パーティクルの水平速度の乗数。雨滴の角度を変更するために使用します。
Y velocityNumber1パーティクルの垂直速度の乗数。

停止パラメーター

名前型デフォルト説明
Fade-out timeNumber5パーティクルシステムは、指定された時間(秒単位)でスポーン率を目標レベルから0まで徐々に減少させます。

例

nani
; 10秒かけて激しい雨を開始します
@rain power:1 time:10

; 30秒かけて雨を停止します
@rain power:0 time:30

Snow ​

雪をシミュレートするパーティクルシステムをスポーンします。専用コマンド:@snow

cover

開始パラメーター

名前型デフォルト説明
IntensityNumber0.5雪の強度(1秒あたりのパーティクルスポーン率)。
Fade-in timeNumber5パーティクルシステムは、指定された時間(秒単位)でスポーン率を0から目標レベルまで徐々に増加させます。

停止パラメーター

名前型デフォルト説明
Fade-out timeNumber5パーティクルシステムは、指定された時間(秒単位)でスポーン率を目標レベルから0まで徐々に減少させます。

例

nani
; 10秒かけて激しい雪を開始します
@snow power:1 time:10

; 30秒かけて雪を停止します
@snow power:0 time:30

Sun ​

太陽光線(レイ)をシミュレートするパーティクルシステムをスポーンします。専用コマンド:@sun

cover

開始パラメーター

名前型デフォルト説明
IntensityNumber0.85光線の強度(不透明度)。
Fade-in timeNumber3パーティクルシステムは、指定された時間(秒単位)で強度を0から目標レベルまで徐々に増加させます。

停止パラメーター

名前型デフォルト説明
Fade-out timeNumber3パーティクルシステムは、指定された時間(秒単位)で不透明度を目標レベルから0まで徐々に減少させます。

例

nani
; 10秒かけて強い日差しを開始します
@sun power:1 time:10

; 30秒かけて日差しを停止します
@sun power:0 time:30

Bokeh ​

被写界深度(別名DOF、ボケ)効果をシミュレートします。焦点の合っているオブジェクトのみが鮮明に保たれ、画像の残りの部分はぼやけます。専用コマンド:@bokeh

ヒント

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

cover

開始パラメーター

名前型デフォルト説明
Focus Object NameStringnull焦点を設定するゲームオブジェクトの名前(オプション)。設定すると、焦点は常にゲームオブジェクトに留まり、Focus Distance パラメーターは無視されます。
Focus DistanceNumber10Naninovelカメラから焦点までの距離。Focus Object Name が指定されている場合は無視されます。
Focal LengthNumber3.75焦点が合っていない領域に適用するぼかしの量。焦点の感度も決定します。
DurationNumber1補間時間(パラメーターが目標値に到達する速さ)。

停止パラメーター

名前型デフォルト説明
Stop DurationNumber1効果が表示されないデフォルト値に効果パラメーターが到達するまでのフェードアウト(無効化)時間。

例

nani
; デフォルトのパラメーターでボケを有効にし、「Kohaku」ゲームオブジェクトに焦点をロックします
@bokeh Kohaku

; 10秒かけて効果をフェードアウト(無効化)します
@bokeh power:0 time:10

; 焦点をカメラから10ユニット離れた場所に設定し、
; 焦点距離を0.95にし、3秒かけて適用します
@bokeh dist:10 power:0.95 time:3

Blur ​

サポートされているアクター(スプライト、レイヤー、ダイススプライト、ユニバーサル、Live2D、Spine、ビデオ、プレースホルダー、シーン実装の背景とキャラクター)にぼかしフィルターを適用します。デフォルトでは(最初のパラメーターが指定されていない場合)、効果は MainBackground アクターに適用されます。専用コマンド:@blur

cover

開始パラメーター

名前型デフォルト説明
Actor IDStringMainBackground効果を適用するアクターのID。効果をサポートするには、アクターが IBlurable インターフェースを実装している必要があります。
IntensityNumber0.5効果の強度(0.0〜1.0の範囲)。
DurationNumber1補間時間(秒単位)(強度が目標値に到達する速さ)。

停止パラメーター

名前型デフォルト説明
Stop DurationNumber1効果のフェードアウト(無効化)時間(秒単位)。

例

nani
; 現在のメイン背景にぼかしを適用します
@blur

; 「Sky」背景に最大強度で2.5秒かけてぼかしを適用します
@blur Sky power:1 time:2.5

; ぼかしをフェードアウトして無効にします
@blur power:0

トランジションエフェクト ​

@back および @char で背景とキャラクターの外観を変更したり、@trans コマンドでシーントランジションを実行したりする場合、使用するトランジションエフェクトを追加で指定できます。たとえば、次のコマンドは、「DropFade」トランジションエフェクトを使用して「River」背景に遷移します。

nani
@back River.DropFade

トランジションエフェクトが指定されていない場合、デフォルトでクロスフェードが使用されます。

time パラメーターを使用して、トランジションの時間(秒単位)を指定することもできます。

nani
@back River.DropFade time:1.5

上記のコマンドは、「DropFade」トランジションで1.5秒かけて「River」背景に遷移します。すべてのトランジションのデフォルトの time は0.35秒です。

次のコマンドを実行する前にトランジションが完了するのを待ちたい場合は、wait! を追加します。

nani
@back River.Ripple time:1.5 wait!
@bgm PianoTheme

— 「PianoTheme」背景音楽は、トランジションが完了した後にのみ再生を開始します。

一部のトランジションエフェクトは追加のパラメーターもサポートしており、params パラメーターで制御できます。

nani
@back River.Ripple params:10,5,0.02

— リップルエフェクトの周波数を10、速度を5、振幅を0.02に設定します。params が指定されていない場合、デフォルトのパラメーターが使用されます。

特定のパラメーターだけを変更したい場合は、他のパラメーターを省略できます。省略したパラメーターにはデフォルト値が使用されます。

nani
@back River.Ripple params:,,0.02

すべてのトランジションパラメーターは数値型です。

上記の例はキャラクターにも適用できます。トランジションは via パラメーターで指定します。

nani
@char CharID.Appearance via:TransitionType params:...

以下のドキュメントで、利用可能なトランジションエフェクトとそのパラメーターおよびデフォルト値を確認できます。


BandedSwirl ​

cover

パラメーター

名前デフォルト
Twist amount5
Frequency10

例

nani
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.BandedSwirl

; ねじれ量はデフォルトのまま、低い周波数でトランジションを適用します
@back Appearance.BandedSwirl params:,2.5

Blinds ​

cover

パラメーター

名前デフォルト
Count6

例

nani
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.Blinds

; デフォルトの6ではなく30のブラインドを使用してトランジションを適用します
@back Appearance.Blinds params:30

CircleReveal ​

cover

パラメーター

名前デフォルト
Fuzzy amount0.25

例

nani
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.CircleReveal

; 高いぼかし量でトランジションを適用します
@back Appearance.CircleReveal params:3.33

CircleStretch ​

cover

例

nani
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.CircleStretch

CloudReveal ​

cover

例

nani
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.CloudReveal

Crossfade ​

cover

例

nani
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.Crossfade

Crumble ​

cover

例

nani
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.Crumble

Dissolve ​

cover

パラメーター

名前デフォルト
Step99999

例

nani
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.Dissolve

; 低いステップでトランジションを適用します
@back Appearance.Dissolve params:100

DropFade ​

cover

例

nani
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.DropFade

LineReveal ​

cover

パラメーター

名前デフォルト
Fuzzy amount0.25
Line Normal X0.5
Line Normal Y0.5
Reverse0

例

nani
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.LineReveal

; 垂直ラインスライドでトランジションを適用します
@back Appearance.LineReveal params:,0,1

; 逆方向(右から左)にトランジションを適用します
@back Appearance.LineReveal params:,,,1

Pixelate ​

cover

例

nani
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.Pixelate

RadialBlur ​

cover

例

nani
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.RadialBlur

RadialWiggle ​

cover

例

nani
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.RadialWiggle

RandomCircleReveal ​

cover

例

nani
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.RandomCircleReveal

Ripple ​

cover

パラメーター

名前デフォルト
Frequency20
Speed10
Amplitude0.5

例

nani
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.Ripple

; 高い周波数と振幅でトランジションを適用します
@back Appearance.Ripple params:45,,1.1

RotateCrumble ​

cover

例

nani
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.RotateCrumble

Saturate ​

cover

例

nani
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.Saturate

Shrink ​

cover

パラメーター

名前デフォルト
Speed200

例

nani
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.Shrink

; 低速度でトランジションを適用します
@back Appearance.Shrink params:50

SlideIn ​

cover

パラメーター

名前デフォルト
Slide amount1

例

nani
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.SlideIn

SwirlGrid ​

cover

パラメーター

名前デフォルト
Twist amount15
Cell count10

例

nani
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.SwirlGrid

; 高いねじれと低いセル数でトランジションを適用します
@back Appearance.SwirlGrid params:30,4

Swirl ​

cover

パラメーター

名前デフォルト
Twist amount15

例

nani
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.Swirl

; 高いねじれでトランジションを適用します
@back Appearance.Swirl params:25

Water ​

cover

例

nani
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.Water

Waterfall ​

cover

例

nani
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.Waterfall

Wave ​

cover

パラメーター

名前デフォルト
Magnitude0.1
Phase14
Frequency20

例

nani
; デフォルトのパラメーターでトランジションを適用します
@back Appearance.Wave

; 高いマグニチュードと低い周波数でトランジションを適用します
@back Appearance.Wave params:0.75,,5

アニメーションイージング ​

時間をかけて値を変更するコマンドの多くは、オプションの easing パラメーターに対応しています。このパラメーターで、時間経過に伴う値の変化の仕方を制御できます。サポートされているオプションは次のとおりです。

text
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 背景に遷移します。

nani
@back River.DropFade time:1.5 easing:EaseOutBounce

カスタム効果の追加 ​

カスタムスポーン効果 ​

組み込みの「Rain」や「Snow」と同様に、プレハブで実装した独立したカスタム効果を追加できます。効果のプレハブをスポーンリソースマネージャー(Naninovel -> Resources -> Spawn)に追加し、@spawn および @despawn コマンドで使用します。

cover

たとえば、スポーンマネージャーを介して Explosion.prefab プレハブが割り当てられている場合、次のコマンドはシーン上でプレハブをスポーンおよびデスポーン(破棄)します。

nani
@spawn Explosion
@despawn Explosion

追加の効果パラメーターは params で指定できます。

nani
@spawn Explosion params:Kohaku,3,true

ヒント

複数のパラメーターを持つカスタム効果を構築する場合は、カスタムコマンド を作成し、SpawnEffect から継承することを検討してください。これにより、params 配列内のパラメーター位置を覚える必要がなくなり、IDE拡張機能 を使用するときに自動補完と型チェックが可能になります。

nani
@explode Kohaku power:3 smoke!

@spawn コマンドにはトランスフォームパラメーターもあり、特定のシーンまたはワールド位置、特定の回転またはスケールでオブジェクトをスポーンできます。例:

nani
; 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 で完全に適用されます。

nani
@camera fx:Dream.1

1つのコマンドで複数のプロファイルをブレンドできます。通常のカメラアニメーションパラメーターでブレンドを制御します。

nani
@camera fx:Dream.0,Night.1 time:3 easing:EaseOutQuad

カスタムカメラ(ポストプロセス)効果と関連するVolumeコンポーネントを追加するには、Unityガイド ↗ に従ってください。

例

カメラ効果の使用例は サンプルプロジェクト にあります。Volumeプロファイルは Settings/Render/Volumes に保存されています。

カスタムトランジションエフェクト ​

ディゾルブマスク ​

ディゾルブマスクテクスチャを使ってカスタムトランジションを作成できます。ディゾルブマスクはグレースケールのテクスチャで、各ピクセルの色によって、ターゲットテクスチャに遷移するタイミングが決まります。たとえば、次のスパイラルディゾルブマスクをご覧ください。

cover

— 右上の黒い四角は、トランジションの開始時にトランジションターゲットがそこに表示されることを示し、中央の真っ白な四角は最後に遷移します。

ヒント

メモリ使用量を最適化するには、ディゾルブテクスチャのインポート設定で Single Channel と Red を設定します。また、視覚的なアーティファクトを防ぐために、Non-Power of 2 と Generate Mipmap オプションが無効になっていることを確認してください。

cover

カスタムトランジションを作成するには、Custom トランジションモードを使用し、dissolve パラメーターを介してディゾルブマスクテクスチャへのパス(プロジェクトの「Resources」フォルダーからの相対パス)を指定します。例:

nani
@back Appearance.Custom dissolve:Textures/Spiral

トランジションの境界を滑らかにする(ぼかす)には、最初のパラメーターを0(スムージングなし)から100(最大スムージング)の範囲で指定します。例:

nani
@back Appearance.Custom dissolve:Textures/Spiral params:90

トランジションを反転するには(ディゾルブマスクの明るい領域が最初に表示されます)、2番目のパラメーターを1に設定します。例:

nani
@back Appearance.Custom dissolve:Textures/Spiral params:,1

使用例については、次のビデオを確認してください。

cover

カスタムシェーダー ​

カスタムアクター シェーダー ↗ を介して完全にカスタムなトランジションエフェクトを追加することが可能です。

新しいシェーダーを作成し、そのシェーダーを使用するマテリアルを用意します。カスタムトランジションエフェクトを使用するアクターの Custom Texture Material プロパティに、そのマテリアルを割り当ててください。カスタムアクターシェーダーの作成と割り当て方法の詳細については、カスタムアクターシェーダー ガイドを参照してください。

スクリプトコマンドでトランジション名が指定されると、アクターが使用するマテリアルで同じ名前(NANINOVEL_TRANSITION_ プレフィックス付き)の シェーダーキーワード ↗ が有効になります。

独自のトランジションをカスタムアクターシェーダーに追加するには、multi_compile_local ディレクティブを使用します。例:

c
#pragma multi_compile_local _ NANINOVEL_TRANSITION_CUSTOM1 NANINOVEL_TRANSITION_CUSTOM2

— Custom1 および Custom2 トランジションを追加します。

その後、条件付きディレクティブを使用して、有効なトランジションキーワードに基づいて特定のレンダリングメソッドを選択できます。組み込みアクターシェーダーを再利用する場合、フラグメントハンドラーで使用される ApplyTransitionEffect メソッドを介してカスタムトランジションを実装することが可能です。

c
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);
}

これで、追加したトランジションを組み込みのものと同じ方法で呼び出せます。例:

nani
@back Snow.Custom1
@back River.Custom2

完全なシェーダーの例については、カスタムアクターシェーダー ガイドを参照してください。