”トップページ用”カテゴリより画像をお借りしてます/対策として有効ではなかったため、投稿形式にzipを復活させました。引き続きなりすまし、パスワード付き圧縮ファイルにご注意ください

カメラ自動切り替えスクリプト生成ツール(要変数MOD)

変数MOD(EC_VariableMod)はHパートにスクリプトを仕込んで各種操作することができますが、それを利用して、
Hパート中のループスピード変更やモーション変更のタイミングに、作成時に登録しておいたカメラアングルに自動で切り替えるスクリプトを書く補助ツールです。
変数MODが読み込む外部スクリプトファイルを作り、その中身を編集します。

事前準備の後、圧縮ファイルを展開して中の.exeファイルを実行して下さい。

当然、BepInExの他に変数MODが必須です。

※注意
直前のパートからスクリプトを設定したHパートへフェード(白)フェード(黒)で繋ぐとなぜかスクリプトが効きません。フェード(クロス)なら効きます。
内部の処理が微妙に違っていて、変数MODがフックしてるのが片方だけだから?らしいのですがよくわかりません。
とりあえず、フェード(白)とフェード(黒)はダメ、とだけ。

●事前準備
1. .NET 8.0 Desktop Runtime (x64)のランタイムが必要なので、ない場合は
https://dotnet.microsoft.com/ja-jp/download/dotnet/8.0/runtime
こちらからインストールして下さい。
(必要ない形で発行しようとしたんですが何をやってもエラーになるので諦めました、すみません。)

2.EmotionCreatorsのシーンを保存しているフォルダ(\EmotionCreators\UserData\edit\scene)に、スクリプトファイルを保存するフォルダ(\Script)を用意して下さい。

3.ECカメラスクリプト生成を起動し、上の”選択”をクリックして今作ったスクリプトフォルダを開き、これから作るスクリプトファイル名を入力して”開く”をクリックして下さい。ファイル名はシーン名等でいいと思います。スクリプトファイル(.xml)が作られ、ECカメラスクリプト生成が中身を編集する状態になります。

4.右上のテキスト枠にスクリプト呼び出し用のテキストが出るので、それをクリップボードにコピーして、
スクリプトを適用するシーンを開き、Hパートより先に読み込まれるADVパートのどこか(Hパートより前ならどこでも大丈夫です)にテキスト枠を置き、中にペースト(Ctrl+V)して下さい。

※注意 下の”追加するテキスト”に何か残ってたら削除しておいてください。スクリプトがエラーを出してしまいます。

これを貼ることで、変数MODが外部スクリプトファイルを読み込みます。
尚、このテキスト枠はシーン再生中は非表示になります。

●Hパートにスクリプトを設定する
1.スクリプトを設定するHパート名を左の”選択中のパート”に入力し、”パート追加”をクリックします。

2.Hパートを開いて各モーションごとのカメラアングルの設定値を取得し、ECカメラスクリプト生成の右側の該当する枠内に入力してください。
切り替えたいところだけでいいです、すべてを埋める必要はありません。

3.入力が終わったら、左中ほどの”書き込み”をクリックします。
その後シーンを再生すると、該当Hパートでカメラアングルが自動で切り替わるはずです。

あとは、Hパートごとに”パート追加”→入力→”書き込み”を繰り返すだけです。
尚、パート名で区別しているので同じ名前のHパートがあると全て同じ設定が適用されると思います。

●カメラアングルの設定値を取得する方法
拙作プラグインCameraAngleGetSetを使う場合は、F5でコピーし、ECカメラスクリプト生成の適用する枠内で右クリック→貼り付けで入力できます。
また、ECカメラスクリプト生成から数値をコピーして、エモクリ内でF6押せばその設定値を適用することもできます。
というかこのために作ったプラグインです。

使わない場合は、RuntimeUnityEditorが利用できます。RumtimeUnityEditorを開き、右ペインのCamera>Main Camera>CameraTargetを開き、
下に出てくるposision(数字が5段並ぶうちの一番上の段)の3つの数値xyzをカメラアングル生成の枠内の上3箇所に入力、
その一段下localPosisionの右端zの数値をカメラアングル生成の枠内の2段目右に入力。
RUEのMain Camera(CameraTargetの一つ上の階層)に戻り、その下のeulerAnglesの3つの数値をカメラアングル生成の枠内下側の3箇所に入力です。

ちなみにそれぞれの意味はpositionが注視点の座標、localPosionZが注視点からカメラまでの距離、eulerAnglesが注視点を中心とした角度、らしいです。

●ループ低速1/低速2、高速1/高速2について
ループの速度は1.0~2.0が低速、2.0~3.0が高速となっていて、それぞれに2段階登録できるようにしてます。
低速1/低速2、高速1/高速2それぞれに数値入力した場合、右上の”切り替え速度”のタイミングで切り替わるので、ここに1.5とか2.4とか入力して下さい。
低速、高速どちらも片方だけ入力した場合は1.0~2.0、2.0~3.0に適用されます。

●各絶頂モーションの1、2について
これも2段階登録できるようにしてますが、切替のタイミングは時間経過です。右上切り替え秒数で切り替わります。

●ウェイトについて
変数MODで仕込んだスクリプトは、Hパート再生中ループし続けながらモーション切り替え等を監視しています。
そのループ1回あたりの時間をミリ秒で設定します。
数値を小さくすればよりラグが減り、その分負荷が上がると思います。
100~200ほどで十分だと思います。

●設定したはずなのに適用されない、ズレる、等
まず、注意にも書いた通りフェード(白)フェード(黒)では効きません。

後、たまにHパートAで設定したスクリプトがHパートBに適用される、などということが起こります。
そういうときは該当パートの前のパート、そのまた前のパート、を一つずつ複製して入れ替えていくとだいたい直ります。
パートやキャラやセリフをコピペしたり消したりしていくうちになにかのはずみで内部のパートIDとパート名がズレてんじゃないかな?と思いますがよくわかりません。

 

コメント

タイトルとURLをコピーしました