takeoff処理another

文書の過去の版を表示しています。


TakeOffプラグインは選択されたメイドをTakeOffするプラグインとして機能を記述します。
TakeOffが脱衣というのは許せない、メイドを飛ばさないとダメだ!!という方はこちらです。

// [ 実行 ]ボタン
if (GUILayout.Button("実行", this.uiStyleButton) && this.maid != null)
{
    // TODO : 実行ボタン押下時の処理を記述(ひな形ではログを出力するだけ)
    ConsoleLog.Information("実行されたメイドさんは{0}。", maid.status.fullNameJpStyle);
}

この部分を

if (GUILayout.Button("実行", this.uiStyleButton) && this.maid != null)
{
    // 飛び上がらせるコルーチンを定義する
    IEnumerator takeOff(Maid targetMaid)
    {
        // 飛び上がった量
        var height = 0f;
        // 飛び上がる速度
        var speed = 0f;
        // 加速度
        var acceleration = 0.01f;
        do
        {
            // 速度を加速度分加速
            speed += acceleration;
            // 今回飛び上がる分を加算
            height += speed;
            // 現在のメイド位置を取得
            var newPosition = targetMaid.transform.position;
            // 今回飛び上がる分をY座標に加算
            newPosition.y += speed;
            // 今回飛び上がらせた位置を反映
            targetMaid.transform.position = newPosition;
            // 1/60秒待つ
            yield return new WaitForSeconds(1f/60f);
            // 計200上昇するまで繰り返す
        } while (height < 200f);
        // 現在のメイド位置を取得
        var orgPosition = targetMaid.transform.position;
        // 飛び上がった分をY座標に減算することで元の位置に
        orgPosition.y -= height;
        // 戻した位置を反映
        targetMaid.transform.position = orgPosition;
    }
    
    // 飛び上がらせるコルーチンを起動する、その際選択中のメイドを渡す。
    this.StartCoroutine(takeOff(this.maid));
}

に変更します。

処理を解説していきます。

if (GUILayout.Button("実行", this.uiStyleButton) && this.maid != null)

GUILayout.Button(“実行”, this.uiStyleButton)は[実行]ボタンを表示し、押されたtrueを返します。
this.maidには選択されたメイドが入っています、選択されていない場合はnullになっています。

つまりこのif文(条件文)は実行ボタンが押されて且つ、メイドが選択されている場合のみ成立します。

// 処理中でなければ
 if (!this.maid.IsBusy)

この this.maid.IsBusy は this.maid つまり選択されたメイドが IsBusy かどうかかチェックしています、否定の!が付いているので選択されたメイドが IsBusy でなければ条件成立です。
この IsBusy はメイドに対してのプリセット適用などプロパティ変更の処理が行われているかどうかの判定です。
オダメでプリセットを適用した場合、少しずつ変化していくと思いますが、あの変化中は IsBusy と言うことになります。

MPN[] takeoffs =
{
    MPN.wear,
    MPN.skirt,
    MPN.mizugi,
    MPN.bra,
    MPN.panz,
    MPN.stkg,
    MPN.shoes,
    MPN.headset,
    MPN.glove,
    MPN.acchead,
    MPN.accha,
    MPN.acchana,
    MPN.acckamisub,
    MPN.acckami,
    MPN.accmimi,
    MPN.accnip,
    MPN.acckubi,
    MPN.acckubiwa,
    MPN.accheso,
    MPN.accude,
    MPN.accashi,
    MPN.accsenaka,
    MPN.accshippo,
    MPN.accanl,
    MPN.accvag,
    MPN.megane,
    MPN.accxxx,
    MPN.acchat,
    MPN.onepiece
};

脱がす部位を設定しています。
MPNはおそらくメイド プロパティ ナンバーかメイド プロパティ ネームかなにかで、メイドのプロパティを表します。
これには MPN.sintyou の様に身長の数値的なものや、 MPN.onepiece の様にワンピースにどの menu ファイルが装着されているかの様なものがあります。
どのようなものがあるかは MPN にキャレット(|カーソル)を当ててF12を押すことで宣言してる部分に飛べます。
※このF12で飛べるということはとても重要になります。覚えておいてください。

// takeoffsに登録されているものを順に解除する
foreach (var takeoff in takeoffs)
{
    this.maid.DelProp(takeoff, false);
}

ここは takeoffs で設定されたものをループで選択されたメイドにDelPropを行っています。
以下のように羅列していくのと同じことになります。

this.maid.DelProp(MPN.wear, false);
this.maid.DelProp(MPN.skirt, false);
this.maid.DelProp(MPN.mizugi, false);
                ・
                ・
                ・

DelProp はMPNを指定して設定されている menu ファイルを外す処理です。
DelProp がどんなことをしているかみたいのであれば DelProp の上で先ほどの F12 です。

// 解除結果を反映させる
this.maid.AllProcPropSeqStart();

最後に AllProcPropSeqStart で結果をメイドに反映させます。
メイドのプロパティを変更した場合は、AllProcPropSeqStart または AllProcProp で反映させる必要があります。
AllProcPropSeqStart は少しずつ、 AllProcProp は一気に反映させます。
※AllProcPropSeqStart で少しずつ反映されている間は、先ほどの IsBusy 状態というわけです。

コメント

コメントを入力:
 
  • takeoff処理another.1681453125.txt.gz
  • 最終更新: 2023/04/14 15:18
  • by fumble