差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
|
takeoff処理another [2023/04/14 15:18] fumble |
takeoff処理another [2023/04/14 15:40] (現在) fumble |
||
|---|---|---|---|
| 行 1: | 行 1: | ||
| - | =====TakeOffプラグインの処理アナザー===== | + | =====TakeOff プラグインの処理アナザー===== |
| - | TakeOffプラグインは選択されたメイドをTakeOffするプラグインとして機能を記述します。\\ | + | TakeOff プラグインは選択されたメイドを TakeOff するプラグインとして機能を記述します。\\ |
| - | TakeOffが脱衣というのは許せない、メイドを飛ばさないとダメだ!!という方はこちらです。\\ | + | TakeOff が脱衣というのは許せない、メイドを飛ばさないとダメだ!!という方はこちらです。\\ |
| // [ 実行 ]ボタン | // [ 実行 ]ボタン | ||
| 行 53: | 行 53: | ||
| 処理を解説していきます。\\ | 処理を解説していきます。\\ | ||
| - | | + | |
| + | IEnumerator takeOff(Maid targetMaid) | ||
| - | GUILayout.Button(" | + | 関数内ローカル関数でコルーチンを定義します。\\ |
| - | this.maidには選択されたメイドが入っています、選択されていない場合はnullになっています。\\ | + | 渡されたメイドに対して 1/60 秒ごとに、上方向に座標を変更するコルーチンを定義します。 |
| - | つまりこのif文(条件文)は実行ボタンが押されて且つ、メイドが選択されている場合のみ成立します。\\ | + | // 飛び上がらせるコルーチンを起動する、その際選択中のメイドを渡す。 |
| + | this.StartCoroutine(takeOff(this.maid)); | ||
| - | // 処理中でなければ | + | 定義したコルーチンに選択中のメイドを渡し実行します。 |
| - | if (!this.maid.IsBusy) | + | |
| - | この this.maid.IsBusy は this.maid つまり選択されたメイドが IsBusy かどうかかチェックしています、否定の!が付いているので選択されたメイドが IsBusy でなければ条件成立です。\\ | + | IEnumerator takeOff(Maid targetMaid) |
| - | この IsBusy はメイドに対してのプリセット適用などプロパティ変更の処理が行われているかどうかの判定です。\\ | + | |
| - | オダメでプリセットを適用した場合、少しずつ変化していくと思いますが、あの変化中は IsBusy と言うことになります。\\ | + | |
| - | + | ||
| - | MPN[] takeoffs = | + | |
| { | { | ||
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | // 速度を加速度分加速 |
| - | | + | speed += acceleration; |
| - | | + | // 今回飛び上がる分を加算 |
| - | | + | |
| - | | + | // 現在のメイド位置を取得 |
| - | MPN.acckami, | + | var newPosition = targetMaid.transform.position; |
| - | MPN.accmimi, | + | // 今回飛び上がる分をY座標に加算 |
| - | | + | |
| - | MPN.acckubi, | + | // 今回飛び上がらせた位置を反映 |
| - | | + | |
| - | MPN.accheso, | + | // 1/ |
| - | MPN.accude, | + | yield return new WaitForSeconds(1f/ |
| - | | + | // 計200上昇するまで繰り返す |
| - | | + | } while (height < 200f); |
| - | | + | // 現在のメイド位置を取得 |
| - | | + | var orgPosition = targetMaid.transform.position; |
| - | MPN.accvag, | + | // 飛び上がった分をY座標に減算することで元の位置に |
| - | MPN.megane, | + | |
| - | MPN.accxxx, | + | // 戻した位置を反映 |
| - | MPN.acchat, | + | |
| - | MPN.onepiece | + | |
| - | | + | |
| - | + | ||
| - | 脱がす部位を設定しています。\\ | + | |
| - | MPNはおそらくメイド | + | |
| - | これには MPN.sintyou の様に身長の数値的なものや、 MPN.onepiece の様にワンピースにどの menu ファイルが装着されているかの様なものがあります。\\ | + | |
| - | どのようなものがあるかは MPN にキャレット(|カーソル)を当ててF12を押すことで宣言してる部分に飛べます。\\ | + | |
| - | **※このF12で飛べるということはとても重要になります。覚えておいてください。**\\ | + | |
| - | + | ||
| - | // takeoffsに登録されているものを順に解除する | + | |
| - | foreach (var takeoff in takeoffs) | + | |
| - | { | + | |
| - | | + | |
| } | } | ||
| - | ここは takeoffs で設定されたものをループで選択されたメイドにDelPropを行っています。\\ | + | コルーチンは連続した処理を一定間隔やフレーム毎に実行させる処理を定義できる関数です。\\ |
| - | 以下のように羅列していくのと同じことになります。 | + | \\ |
| - | + | acceleration ずつ speed をあげて、その speed 分メイドの Y 座標を上に変更します。\\ | |
| - | this.maid.DelProp(MPN.wear, | + | 変更した量は height に記録しておいて、200 以上上昇するまで |
| - | this.maid.DelProp(MPN.skirt, | + | 200 以上上昇後は、 |
| - | this.maid.DelProp(MPN.mizugi, | + | |
| - | ・ | + | |
| - | ・ | + | |
| - | ・ | + | |
| - | + | ||
| - | DelProp はMPNを指定して設定されている menu ファイルを外す処理です。\\ | + | |
| - | DelProp がどんなことをしているかみたいのであれば DelProp の上で先ほどの F12 です。\\ | + | |
| - | + | ||
| - | // 解除結果を反映させる | + | |
| - | this.maid.AllProcPropSeqStart(); | + | |
| - | + | ||
| - | 最後に AllProcPropSeqStart で結果をメイドに反映させます。\\ | + | |
| - | メイドのプロパティを変更した場合は、AllProcPropSeqStart | + | |
| - | AllProcPropSeqStart | + | |
| - | ※AllProcPropSeqStart で少しずつ反映されている間は、先ほどの IsBusy 状態というわけです。\\ | + | |
| + | ====欲張りなあなたへ・・・==== | ||
| + | 脱衣後に打ち上がられてもいいんじゃよ。\\ | ||